okhttp上传文件和携带参数

一个小工具类用来post json字符串和文件上传并且带参数外加忽略https证书认证

1 上传文件和参数

 
  
public class NetWorkUtilsHttps {
    public static final MediaType JSON = MediaType
            .parse("application/json; charset=utf-8");
    private OkHttpClient client;
    private SSLContext sslContext = null;

    public NetWorkUtilsHttps() {
        X509TrustManager xtm = new X509TrustManager() {
            @Override
            public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

            }

            @Override
            public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

            }

            @Override
            public X509Certificate[] getAcceptedIssuers() {
                return new X509Certificate[0];
            }
        };
        try {
            sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, new TrustManager[]{xtm}, new SecureRandom());
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (KeyManagementException e) {
            e.printStackTrace();
        }
        HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
            @Override
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        };
        client = new OkHttpClient.Builder()
                .sslSocketFactory(sslContext.getSocketFactory())
                .readTimeout(50, TimeUnit.SECONDS)
                .connectTimeout(50, TimeUnit.SECONDS)
                .hostnameVerifier(DO_NOT_VERIFY)
                .build();
    }

//post  json  
  .addHeader("code", trsCode)
是加头部的一些参数
public String post(String json, String code, String url) { RequestBody body = RequestBody. create( JSON, json); Request request = new Request.Builder() .url(url) .addHeader( "code", trsCode).post(body).build(); try { Response response = client.newCall(request).execute(); if (response.isSuccessful()) { return response.body().string(); } response.body().close(); } catch (IOException e) { e.printStackTrace(); } return "{ \" ROOT \" :{ \" BODY \" :{ \" info \" :[]}, \" HEAD \" :{ \" resCode \" : \" 545 \" , \" TrsAppType \" : \" 1 \" , \" resMsg \" : \" 连接服务器失败,请稍后重试! \" }}}"; } public String uploadFile(File file, String uniqueNo, String fileCode, String path) { StringBuffer resultBuffer = new StringBuffer( ""); Map params = new HashMap<>(); params.put( "busiType", "0"); //业务类型 params.put( "flag", "up"); // 操作标志:up-上传 down-下载 params.put( "fileType", fileCode); //文件所属类型 code码 参数 MultipartBody.Builder form = new MultipartBody.Builder().setType(MultipartBody. FORM); StringBuffer buffer = new StringBuffer(); String url = path; url += "?"; for (String key : params.keySet()) { //添加参数 buffer.append(key + "=" + params.get(key) + "&"); Log. e(key, params.get(key)); } url += buffer.toString(); if (url.lastIndexOf( "&") != - 1) { url = url.substring( 0, url.lastIndexOf( "&"));//拼接参数 }
//放文件
        form.addPart(Headers.of("Content-Disposition", "form-data; name=\"file\";filename=\"" + file.getName() + "\""), RequestBody.create(MediaType.parse("image/png"), file));
        RequestBody body = form.build();
        Request request = new Request
                .Builder()
                .url(url)
                .addHeader("Connection", "keepAlive")
                .addHeader("Charset", "UTF-8")
                .post(body)
                .build();
        try {
            Response response = client.newCall(request).execute();
            if (response.isSuccessful()) {
                resultBuffer.replace(0, resultBuffer.length(), response.body().string());
                Log.e("upFileFlag", resultBuffer.toString());
                return resultBuffer.toString();
            } else {
                Log.e("error", response.body().string());
            }
            response.body().close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "{\"resCode\":\"099\",\"resMsg\":\"上传文件失败\"}";
    }


}

你可能感兴趣的:(Android学习)