Volley 简单使用(四) Volley+HttpComponents进行多文件上传

由于Volley在解析期间将所有数据保存在内存中,不适合文件下载或流式操作,因此Volley本身并没有提供上传及下载的Request,大文件上传下载是完全不适合使用的,但是小文件还是可以勉强使用的。
对于HttpComponents一定不会陌生,使用过HttpClient就一定知道,使用HttpComponents的原因只是为了简化操作,将复杂的流操作都由其进行处理。

Volley 简单使用(二) JsonRequest以及自定义Request

目前大部分请求返回的数据都是JSON格式,为了方便解析,Volley还提供了JsonRequest,其中包括JsonObjectRequest和JsonArrayRequest。
使用方法和StringRequest基本相同,只不过返回的数据为JSONObject或者JSONArray,大大增加了便利性。
如果JSONObject和JSONArray还不能满足需求的话,也可以通过继承Request类的方式自定义Gson或者FastJson的请求。

Volley 简单使用(一) StringRequest

Volley是Google官方发布的一款用于Android的HTTP库,旨在进行网络请求时更快更简单,适用于数据量不大的请求。

优点

  1. 自动调度网络请求。
  2. 多个并发网络连接。
  3. 具有标准HTTP 缓存一致性的透明磁盘和内存响应缓存 。
  4. 支持请求优先级。
  5. 取消请求API。可以取消单个请求,也可以设置要取消的请求块或范围。
  6. 易于定制,例如,重试和退避。
  7. 强大的排序功能,可以使用从网络异步获取的数据轻松正确填充UI。
  8. 调试和跟踪工具

缺点

因为Volley在解析期间将所有数据保存在内存中,所以不适合大型下载或流式操作。

OKHTTP3 简单使用(五) 下载文件

基于GET进行文件下载,写法与GET请求基本一致,只不过一般GET请求的时候是通过获取ResponseBody的String,从String中获取服务器的回调信息,而下载则是通过获取ResponseBody的InputStream,然后将InputStream保存到本地文件中

由于文件下载不仅仅涉及网络请求,还涉及文件的读写,不建议在主线程中进行,因此建议使用异步方式进行请求

OKHTTP3 简单使用(四) 上传文件

文件上传基于POST,因此和POST写法基本一致,但是不再使用FormBody,FormBody使用的MideaType(Content-Type)为"application/x-www-form-urlencoded; charset=utf-8",无法上传文件,而上传文件需要通过"application/form-data; charset=utf-8"的方式进行

OkHttp还提供了一个MultipartBody类,同样继承自RequestBody,可以以"application/form-data; charset=utf-8"进行文件上传,同时"application/form-data"不仅可以上传文件,也可以用于普通数据的提交

OKHTTP3 简单使用(三) POST方法

无论是GET还是POST请求,最后都是有Call发起的,所以POST也可以有同步和异步两种方式,请求时步骤与GET基本一致

与GET不同的是,在构建Request的时候,需要传一个RequestBody对象,RequestBody用来添加请求参数以及制定MideaType(Content-Type)

OKHTTP3 简单使用(一) 介绍及Android Studio集成

HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttp是一个高效的HTTP客户端,它有以下默认特性:

  • 支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接
  • 连接池减少请求延时
  • 透明的GZIP压缩减少响应数据的大小
  • 缓存响应内容,避免一些完全重复的请求

当网络出现问题的时候OkHttp依然坚守自己的职责,它会自动恢复一般的连接问题,如果你的服务有多个IP地址,当第一个IP请求失败时,OkHttp会交替尝试你配置的其他IP,OkHttp使用现代TLS技术(SNI, ALPN)初始化新的连接,当握手失败时会回退到TLS 1.0。