Android必知必会-使用okhttp的PUT方式上传文件
2016-03-21 12:00
507 查看
注:如果移动端排版有问题,请看 简书版 (<-点击左边),希望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其他方面更加详细的介绍:
相关文章推荐
- Android必知必会-使用okhttp的PUT方式上传文件
- iOS开发-网络请求
- HTTP状态码
- 网络面试题:TCP和UDP的9个区别是什么
- 神经网络和反向传播算法推导
- TCP与Socket状态转换图
- 第八章 网络的时代—网络开发(4)
- 第八章 网络的时代—网络开发(3)
- 神经网络学习笔记
- TCP/IP、Http的区别
- iOS开发之HTTP
- 第八章 网络的时代—网络开发(2)
- 判断网络状态,2G,3G,Wifi
- 第八章 网络的时代—网络开发(1)
- HTTP协议详解
- iOS/Android/Web Url Encode空格處理 原文連結:http://read01.com/3gDO.html
- 基于 HttpClients 的url访问
- 开发网站登录功能时,如何保证密码在网络传输过程中的安全?
- HTTP_HOST 和 SERVER_NAME 的区别
- 如何在HTTP客户端与服务器端之间保持状态