Android必知必会-使用okhttp的PUT方式上传文件
2024-10-07 06:41:40
注:如果移动端排版有问题,请看 简书版 (<-点击左边),希望CSDN能更好的支持移动端。
背景
公司的文件上传接口使用PUT协议,之前一直用的都是老项目中的上传类,现在项目中使用了okhttp网络库,就查了下资料,在这里分享一下。
代码实现
okhttp 2.7.X
/**
* @param mediaType MediaType
* @param uploadUrl put请求地址
* @param localPath 本地文件路径
* @return 响应的结果 和 HTTP status code
* @throws IOException
*/
public String put(MediaType mediaType, String uploadUrl, String localPath) throws IOException {
File file = new File(localPath);
RequestBody body = RequestBody.create(mediaType, file);
Request request = new Request.Builder()
.url(uploadUrl)
.put(body)
.build();
Response response = client.newCall(request).execute();
return response.code()+ ":" + response.body().string() ;
}
//上传JPG图片
public String putImg(String uploadUrl, String localPath) throws IOException {
MediaType Image = MediaType.parse("image/jpeg; charset=utf-8");
return put(Image, uploadUrl, localPath);
}
可能还需要进行的设置:修改各种Timeout
OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(30, TimeUnit.SECONDS);
client.setReadTimeout(15, TimeUnit.SECONDS);
client.setWriteTimeout(30, TimeUnit.SECONDS);
okhttp 3.X
/**
* @param mediaType MediaType
* @param uploadUrl put请求地址
* @param localPath 本地文件路径
* @return 响应的结果 和 HTTP status code
* @throws IOException
*/
public String put(MediaType mediaType, String uploadUrl, String localPath) throws IOException {
File file = new File(localPath);
RequestBody body = RequestBody.create(mediaType, file);
Request request = new Request.Builder()
.url(uploadUrl)
.put(body)
.build();
//修改各种 Timeout
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(600, TimeUnit.SECONDS)
.readTimeout(200, TimeUnit.SECONDS)
.writeTimeout(600, TimeUnit.SECONDS)
.build();
//如果不需要可以直接写成 OkHttpClient client = new OkHttpClient.Builder().build();
Response response = client
.newCall(request)
.execute();
return response.body().string() + ":" + response.code();
}
//上传JPG图片
public String putImg(String uploadUrl, String localPath) throws IOException {
MediaType imageType = MediaType.parse("image/jpeg; charset=utf-8");
return put(imageType, uploadUrl, localPath);
}
总结
以上是最基本的代码实现,你还可以加上自己的各种监听。
下面是okhttp
其他方面更加详细的介绍:
最新文章
- MongoDB基础
- Jquery知识点梳理
- winform中设置窗体的默认焦点
- iOS8 针对开发者所拥有的新特性汇总如下
- Python入门和基础
- 如何在Linux上安装Tomcat
- Lowest Common Ancestor of a Binary Tree——Leetcode
- paip.c++ qt 图片处理 检测损坏的图片
- iOS之极光推送
- asp.net 开发注意的几点
- 读书笔记—CLR via C#线程25-26章节
- android6.0SDK 删除HttpClient的相关类的解决方法
- 微服务---Eureka注册中心(服务治理)
- easyui tab上面添加右键菜单
- docker内程序如何读取dockerfile和compose.yml中设置的环境变量
- UG中STP203和STP214的区别
- .Net 垃圾回收和大对象处理 内存碎片整理
- C++头文件的工作原理
- 3.修改更新源sources.list,提高软件下载安装速度(2017.04.05)
- JAVA中的File.separate(跨平台路径)
热门文章
- WOJ 124. Football Coach 网络流
- ●POJ 1509 Glass Beads
- SpringCloud学习之sleuth&;zipkin
- Python 中的 if __name__ == &#39;__main__&#39; 该如何理解
- rsync 系统用户/虚拟用户 备份web服务器数据及无交互定时推送备份
- CentOS7.2安装mysql5.6
- Lintcode389 Valid Sudoku solution 题解
- Java网络爬虫Hello world实现——Httpclient爬取百度首页
- CSS 常用的命名规则
- 学习ASP.NET Core Razor 编程系列七——修改列表页面