okhttp上传文件和携带参数
2016-12-01 17:17
344 查看
一个小工具类用来post json字符串和文件上传并且带参数外加忽略https证书认证
1 上传文件和参数
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<String, String> 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("&"));//拼接参数 }
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<String, String> 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\":\"上传文件失败\"}"; } }
相关文章推荐
- okhttp3上传文件并携带其他参数
- Android OkHttp Post上传文件并且携带参数
- Android OkHttp Post上传文件并且携带参数实例详解
- okhttp上传文件时携带参数
- spring mvc 文件上传并携带其他参数
- android OkHttp 上传文件附带参数
- AFNetworking 3.0携带参数上传文件Demo 付java服务器端代码
- Okhttp3 带参数文件上传~重复造轮子中
- asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
- okhttp 上传带参数文件
- c#使用HttpWebRequest上传文件同时携带其他参数
- spring mvc实现文件上传并携带其他参数的示例
- Okhttp3上传参数、文件和同时上传
- layui结合SpringMVC上传文件以及携带额外的参数上传文件
- Okhttp3参数和文件同时上传
- AFNetworking 3.0携带参数上传文件Demo
- ssh中上传文件携带参数
- OkHttp Post上传文件,携带参数
- 继续上次的android上传文件携带参数POST提交