相关请求库

1.Volley

github:

  • https://github.com/google/volley
  • https://github.com/mcxiaoke/android-volley

优点:

  • 默认Android2.3即以上基于HttpURLConnection,2.3以下基于HttpClient
  • 符合Http缓存语义的缓存机制(提供了默认的磁盘和内存等缓存)
  • 请求队列的优先级排列
  • 提供多样的请求取消机制
  • 提供简便的图片加载工具

缺点:

  • 不能下载体积大的文件

2.android-async-http

github:

https://github.com/android-async-http/android-async-http

优点:

  • 在匿名回调中处理请求结果
  • 在UI线程外处理Http请求
  • 文件断点上传
  • 智能重试
  • 默认gzip压缩
  • 支持解析成json格式
  • 可将Cookies持久化到SharePreference

缺点:

  • 不在维护,当有新需求的时候没法更新

3.okhttp(推荐)

github:

https://github.com/square/okhttp

优点:

  • 支持http请求,https请求、支持同步异步
  • 支持文件下载、加载图片、基于Http的文件上传
  • 使用的是HttpURLConnection,不用担心android版本的变换
  • 利用响应缓存来避免重复的网络请求
  • 支持 SPDY,允许连接同一主机的所有请求分享一个socket,如果SPDY不可用,会使用连接池减少请求延迟
  • 使用gzip压缩下载内容,且压缩操作对用户是透明的

4.Retrofit(推荐)

github:

https://github.com/square/retrofit

优点:

  • 支持多种http请求库
  • 注解处理,简化代码
  • 支持上传和下载文件
  • 支持同步、异步和RxJava
  • 超级解耦、rest风格,更安全和高效
  • 支持更换解析模式,如json、xml等
  • 使用非常方便灵活

Http协议

1.定义
超文本传输协议(Hypertext transfer protocol),是一个应用层的通信协议

2.版本区别

  • Http0.9
    • 只接受GET一种请求方法,没有在通信中指定版本号,且不支持请求头。由于该版本不支持POST方法,因此客户端无法向服务器传递太多信息
  • Http1.0、Http1.0+
    • 相对0.9版本增加了版本号码、请求头、MIMIE、代理连接
  • Http1.1
    • 默认支持持久连接,支持缓存,支持管道发送多个请求
  • Http2.0
    • 支持spdy
      • 支持多路复用,一个Tcp连接上同时跑多个Http请求,请求可设定优先级
      • 去除不需要的Http头,压缩Http头,以减少需要的网络带宽
      • 使用了SSL作为数据传输协议提供数据安全
      • 对传输的数据使用gzip进行压缩
      • 提供服务方发起通信,并向客户端推送数据的机制
    • 特点
      • 支持复用允许同时通过单一的Http/2连接发起多重的请求-响应消息
      • 头部压缩
        • hpack算法压缩数据
      • 请求划分优先级
      • 服务器推送流

3.Http的几种请求方式

  • GET

    请求获取Request-URI所表示的资源

  • POST

    在Request-URI所标识的资源后附加新的数据

  • HEAD

    获取由Request-URI所标识的资源的响应信息报头

  • PUT

    请求服务器存储一个资源,并用Request-URI作为其标识

  • DELETE

    请求服务器删除Request-URI所标识的资源

  • TRACE

    请求服务器回送收到的请求信息,主要用于测试或诊断

  • CONNET

    保留将来使用

  • OPTIONS

    请求查询服务器性能,或者查询与资源相关的选项

4.Http响应码
Android网络请求

相关文章: