Android OkHttp Post上传文件并且携带参数

这里整理一下 OkHttp 的 post 在上传文件的同时,也要携带请求参数的方法。
使用 OkHttp 版本如下:
compile 'com.squareup.okhttp3:okhttp:3.4.1'
代码如下:
protected void post_file(final String url, final Map<String, Object> map, File file) {
OkHttpClient client = new OkHttpClient();
// form 表单形式上传
MultipartBody.Builder requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM);
if(file != null){
// MediaType.parse() 里面是上传的文件类型。
RequestBody body = RequestBody.create(MediaType.parse("image/*"), file);
String filename = file.getName();
// 参数分别为, 请求key ,文件名称 , RequestBody
requestBody.addFormDataPart("headImage", file.getName(), body);
}
if (map != null) {
// map 里面是请求中所需要的 key 和 value
for (Map.Entry entry : map.entrySet()) {
requestBody.addFormDataPart(valueOf(entry.getKey()), valueOf(entry.getValue()));
}
}
Request request = new Request.Builder().url("请求地址").post(requestBody.build()).tag(context).build();
// readTimeout("请求超时时间" , 时间单位);
client.newBuilder().readTimeout(5000, TimeUnit.MILLISECONDS).build().newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.i("lfq" ,"onFailure");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
String str = response.body().string();
Log.i("lfq", response.message() + " , body " + str);
} else {
Log.i("lfq" ,response.message() + " error : body " + response.body().string());
}
}
});
}
这里说明一点,就是 MultipartBody.Builder 的 addFormDataPart 方法,是对于之前的 addPart 方法做了一个封装,所以,不需要再去配置 Header 之类的。
如果只是单纯的 Post 携带参数,那么直接使用 FormBody ,代码如下:
FormBody.Builder formBody = new FormBody.Builder();
if (map != null) {
for (Map.Entry entry : map.entrySet()) {
formBody.add(String.valueOf(entry.getKey()),String.valueOf(entry.getValue()));
}
}
以上只是针对项目中遇到的问题进行整理,需要了解更多,请自行查阅大神们的解析。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# OkHttp
# Post上传文件
# Post上传文件传参
# Post
# Android retrofit上传文件实例(包含头像)
# android 上传文件到服务器代码实例
# Android实现上传文件功能的方法
# Android中实现OkHttp上传文件到服务器并带进度
# Android实现上传文件到服务器实例详解
# Android上传文件到服务端并显示进度条
# android 开发中使用okhttp上传文件到服务器
# Android上传文件到服务器的方法
# Android WebView 上传文件支持全解析
# Android程序开发通过HttpURLConnection上传文件到服务器
# Android使用Retrofit上传文件功能
# 上传文件
# 上传
# 也要
# 不需要
# 希望能
# 大神
# 分别为
# 再去
# 谢谢大家
# 表单
# 所需要
# 整理一下
# 请自行
# client
# form
# create
# OkHttpClient
# map
# gt
# file
相关文章:
如何用西部建站助手快速创建专业网站?
简单实现Android文件上传
如何在阿里云服务器自主搭建网站?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
北京网站制作网页,网站升级改版需要多久?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
非常酷的网站设计制作软件,酷培ai教育官方网站?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
如何快速搭建支持数据库操作的智能建站平台?
寿县云建站:智能SEO优化与多行业模板快速上线指南
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
香港网站服务器数量如何影响SEO优化效果?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
宝塔新建站点报错如何解决?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
中山网站推广排名,中山信息港登录入口?
如何正确下载安装西数主机建站助手?
想学网站制作怎么学,建立一个网站要花费多少?
如何快速配置高效服务器建站软件?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
设计网站制作公司有哪些,制作网页教程?
如何快速搭建FTP站点实现文件共享?
如何注册花生壳免费域名并搭建个人网站?
建站之星如何优化SEO以实现高效排名?
建站主机数据库如何配置才能提升网站性能?
营销式网站制作方案,销售哪个网站招聘效果最好?
测试制作网站有哪些,测试性取向的权威测试或者网站?
建站之星好吗?新手能否轻松上手建站?
开心动漫网站制作软件下载,十分开心动画为何停播?
建站主机如何选?高性价比方案全解析
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
建站主机与服务器功能差异如何区分?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
建站之星展会模版如何一键下载生成?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
建站之星备案流程有哪些注意事项?
如何通过PHP快速构建高效问答网站功能?
兔展官网 在线制作,怎样制作微信请帖?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何通过老薛主机一键快速建站?
如何选择PHP开源工具快速搭建网站?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
建站主机助手选型指南:2025年热门推荐与高效部署技巧
高防服务器租用首荐平台,企业级优惠套餐快速部署
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
网站制作难吗安全吗,做一个网站需要多久时间?
盐城做公司网站,江苏电子版退休证办理流程?
*请认真填写需求信息,我们会在24小时内与您取得联系。