本文主要是介绍okhttp3实现post方式上传文件加参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
android开发中上传图片到服务端是再常见不过的功能。直奔主题:项目中用okhttp实现图片+文字参数上传。
我使用的okhttp版本:
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
实现代码:
//初始化OkHttpClientOkHttpClient client = new OkHttpClient();// form 表单形式上传MultipartBody.Builder requestBody = new MultipartBody.Builder();requestBody.setType(MultipartBody.FORM);//pathList是文件路径对应的列表if (null != pathList && pathList.size() > 0) {for (String path : pathList) {File file = new File(path);if (file != null) {// MediaType.parse() 里面是上传的文件类型。RequestBody body = RequestBody.create(MediaType.parse("image/*"), file);// 参数分别为, 请求key ,文件名称 , RequestBodyrequestBody.addFormDataPart("images", file.getName(), body);}}}//要上传的文字参数Map<String, String> map = new HashMap<>();map.put("param1", "param1" );map.put("param2","param1");if (map != null) {for (String key : map.keySet()) {requestBody.addFormDataPart(key, map.get(key));}}//创建Request对象Request request = new Request.Builder().url(Constant.HTTP_URL).addHeader("Content-Type", "application/json;charset=UTF-8")//添加header.addHeader("token", "xxxxx").build();// readTimeout("请求超时时间" , 时间单位);client.newBuilder().readTimeout(5000, TimeUnit.MILLISECONDS).build().newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {//请求失败处理mHandler.sendEmptyMessage(Constant.RESPONSE_FAIL);}@Overridepublic void onResponse(Call call, Response response) throws IOException {if (response.isSuccessful()) {mHandler.sendEmptyMessage(Constant.RESPONSE_SUCCESS);} else {mHandler.sendEmptyMessage(Constant.RESPONSE_FAIL);}}});
mHandler就是Android开发最熟悉的Handler了,就不在这帖代码了。
这篇关于okhttp3实现post方式上传文件加参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!