okhttp3实现post方式上传文件加参数
Posted 事在人为,幸福从不抱怨开始!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了okhttp3实现post方式上传文件加参数相关的知识,希望对你有一定的参考价值。
android开发中上传图片到服务端是再常见不过的功能。直奔主题:项目中用okhttp实现图片+文字参数上传。
我使用的okhttp版本:
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
实现代码:
//初始化OkHttpClient
OkHttpClient 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 ,文件名称 , RequestBody
requestBody.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()
@Override
public void onFailure(Call call, IOException e)
//请求失败处理
mHandler.sendEmptyMessage(Constant.RESPONSE_FAIL);
@Override
public 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方式上传文件加参数的主要内容,如果未能解决你的问题,请参考以下文章
转asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端