彻底掌握网络通信(十一)HttpURLConnection进行网络请求的知识准备

在前面的章节中,详细介绍了如何使用httpclient来进行网络请求,详见
彻底掌握网络通信(一)Http协议基础知识
彻底掌握网络通信(二)Apache的HttpClient基础知识
彻底掌握网络通信(三)Android源码中HttpClient的在不同版本的使用
彻底掌握网络通信(四)Android源码中HttpClient的发送框架解析
彻底掌握网络通信(五)DefaultRequestDirector解析
彻底掌握网络通信(六)HttpRequestRetryHandler解析
彻底掌握网络通信(七)ConnectionReuseStrategy,ConnectionKeepAliveStrategy解析
彻底掌握网络通信(八)AsyncHttpClient源码解读
彻底掌握网络通信(九)AsyncHttpClient为什么无法用Fiddler来抓包
彻底掌握网络通信(十)AsyncHttpClient如何发送JSON解析JSON,以及一些其他用法

httpclient过重的设计,繁杂的API使得开发人员使用或者扩展起来有些力不从心,顾Google设计了小巧的HttpURLConnection来帮助我们简化操作


1:URLConnection中的doInputdoOutput的含义
  doInput : 此变量由 setDoInput 方法设置,其值由 getDoInput 方法返回;将 doInput 标志设置为 true,指示应用程序要从 URL 连接读取数据,其默认值为true
  doOutput : 此变量由 setDoOutput 方法设置。其值由 getDoOutput 方法返回。将 doOutput 标志设置为 true,指示应用程序要将数据写入 URL 连接,其默认值为false


2:SPDY协议
  这里我们不对这个协议做深入了解,这个协议在网络模型中处于应用层,是个应用层协议,其是speedy的缩写,意味更快速地;这个快速是相对于tcp的慢启动而言;
  SPDY 协议只是在性能上对 HTTP 做了很大的优化,其核心思想是尽量减少连接个数,而对于 HTTP 的语义并没有做太大的修改。具体来说是,SPDY 使用了 HTTP 的方法和页眉,但是删除了一些头并重写了 HTTP 中管理连接和数据转移格式的部分,所以基本上是兼容 HTTP 的。


3:HTTP协议SPDY协议的比较

3.1 HTTP 协议的不足

3.1.1 单路连接 请求低效
  HTTP 协议的最大弊端就是每个 TCP 连接只能对应一个 HTTP 请求,浏览器只能通过建立多个连接来解决。此外在 HTTP 中对请求是严格的先入先出(FIFO)进行的,如果中间某个请求处理时间较长会阻塞后面的请求。

3.1.2 HTTP 只允许由客户端主动发起请求

3.1.3 HTTP 头冗余
  HTTP 头在同一个会话里是反复发送的,中间的冗余信息,比如 User-Agent、Host 等不需要重复发送的信息也在反复发送,浪费带宽和资源。

3.2 SPDY 协议的优点

3.2.1 多路复用 请求优化
  多路复用的时候可以设置优先级,而不像传统 HTTP 那样严格按照先入先出一个一个处理请求,它会选择性的先传输 CSS 这样更重要的资源,然后再传输网站图标之类不太重要的资源,可以避免让非关键资源占用网络通道的问题,提升 TCP 的性能

3.2.2 支持服务器推送技术

3.2.3 SPDY 压缩了 HTTP 头

3.2.4 强制使用 SSL 传输协议


4: http协议中的缓存
  缓存是用Cache-control来进行控制的,其值有private、no-cache、max-age、must- revalidate等,默认为private

  max-age: 设置缓存的最大的有效时间,单位为秒(s)。max-age会覆盖掉Expires
  public:浏览器和缓存服务器都可以缓存页面信息。
  private: 响应只作为私有的缓存,不能在用户间共享。如果要求HTTP认证,响应会自动设置为private。
  no-cache:不缓存过期的资源,缓存会向服务器进行有效处理确认之后处理资源。使用no-cache的目的就是为了防止从缓存中获取过期的资源
  no-store: 请求和响应的信息都不应该被存储在对方的磁盘系统中
  must-revalidate: 如果页面过期,则去服务器进行获取。
  Expires:表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的 效果。但是如果同时存在,则被Cache-Control的max-age覆盖。 格式: Expires :时间,后面跟一个时间或者日期,超过这个时间后缓存失效。也就是浏览器发出请求之前,会检查这个时间是否失效,若失效,则浏览器会重新发出请求

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值