注:如果移动端排版有问题,请看 简书版 (<-点击左边),希望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其他方面更加详细的介绍:

GitHub:okhttp

Android必知必会-使用okhttp的PUT方式上传文件

OkHttp使用教程

最新文章

  1. MongoDB基础
  2. Jquery知识点梳理
  3. winform中设置窗体的默认焦点
  4. iOS8 针对开发者所拥有的新特性汇总如下
  5. Python入门和基础
  6. 如何在Linux上安装Tomcat
  7. Lowest Common Ancestor of a Binary Tree——Leetcode
  8. paip.c++ qt 图片处理 检测损坏的图片
  9. iOS之极光推送
  10. asp.net 开发注意的几点
  11. 读书笔记—CLR via C#线程25-26章节
  12. android6.0SDK 删除HttpClient的相关类的解决方法
  13. 微服务---Eureka注册中心(服务治理)
  14. easyui tab上面添加右键菜单
  15. docker内程序如何读取dockerfile和compose.yml中设置的环境变量
  16. UG中STP203和STP214的区别
  17. .Net 垃圾回收和大对象处理 内存碎片整理
  18. C++头文件的工作原理
  19. 3.修改更新源sources.list,提高软件下载安装速度(2017.04.05)
  20. JAVA中的File.separate(跨平台路径)

热门文章

  1. WOJ 124. Football Coach 网络流
  2. ●POJ 1509 Glass Beads
  3. SpringCloud学习之sleuth&amp;zipkin
  4. Python 中的 if __name__ == &#39;__main__&#39; 该如何理解
  5. rsync 系统用户/虚拟用户 备份web服务器数据及无交互定时推送备份
  6. CentOS7.2安装mysql5.6
  7. Lintcode389 Valid Sudoku solution 题解
  8. Java网络爬虫Hello world实现——Httpclient爬取百度首页
  9. CSS 常用的命名规则
  10. 学习ASP.NET Core Razor 编程系列七——修改列表页面