HTTP1.1请求和响应的基本用法
2015-04-12 19:43
267 查看
HTTP1.1是现在普遍使用的TCP/IP的应用层协议,按照Volley中的描述,可以把HTTP传输数据相关对象分为两个类,一个叫Request(请求),一个是Response(响应)。
对于一个基本的Request,我们通过chrome自带的查看工具来查看一下:
在地址栏输入:chrome://net-internals/#events
我们打开百度,然后在上述页面中找到URL_REQUEST:
查看内容是:
看着上面那个两个请求内容,我们来分析一下一个HTTP请求的基本内容如何构造。
HTTP使用TCP/IP协议建立连接和发送数据,对于一个建立了连接的线路,一端称为服务端,另一端称为客户端,HTTP请求就是在客户端发送给服务端来请求数据的一组数据。
请求报文格式:
对于请求行,格式是这样的:
请求类型(Method)[空格]URL[空格]HTTP版本
例如,对于百度www.baidu.com
请求行:GET www.baidu.com HTTP/1.1
method比较常用的有GET/POST..
对于头部,一般使用键值对,常用的键值对可以分为通用头部,请求头部,相应头部,一般这些数据标记了一些与请求或是响应的数据相关的时间,格式等。这些东西我也没都记住,就不介绍了。
我们来分析刚才对百度的请求:
可以看到,所有前面有:的都是请求行的内容,其他的都是头部的内容。
然后我们来看看响应的结构:
状态行的结构:
HTTP版本[空格]状态码[空格]状态短语
例如,对于一个成功的请求,返回的状态行是:
HTTP/1.1 200 OK
这里所说的状态码我们最熟悉的就是一个404, NOT FOUND的标记。
下面要说一下主体,这个主体为什么说是大部分都有呢?因为这个位置的内容就是客户端请求的数据,服务端将请求的数据在这里发送回来,但是某些情况下,因为在HTTP协议中定义了一个有关cache的内容,我们可以吧请求和响应对应起来,发生请求的时候携带一个本地是否有之前响应的缓存,如果有就与服务端的参数对比,如果没有更改,那么服务端返回的状态码是304,此时就不再返回主体数据,只需要从缓存中取出Entry即可。还有某些情况下4xx,5xx这些错误信息也是不携带主体的。
下面分析一下刚才对于访问百度返回的响应:
可以看到第一行就是响应的状态行,其他的都是头部信息,其中data/expires这些可以用来进行cache对比来判断是否有更改/更新,而且我们要知道,有一种部分更改的响应,在协议说明中,这种响应是和本地缓存进行合并返回给请求的。
下面我们来简要分析一下Volley的Request的结构:
因为是前期做的,可能有很多错误,请见谅。
只有Request是不能反映Volley如何进行请求的,我们还要结合Network接口来实现:
对于响应:
详细内容自行看源码即可。
对于一个基本的Request,我们通过chrome自带的查看工具来查看一下:
在地址栏输入:chrome://net-internals/#events
我们打开百度,然后在上述页面中找到URL_REQUEST:
查看内容是:
看着上面那个两个请求内容,我们来分析一下一个HTTP请求的基本内容如何构造。
HTTP使用TCP/IP协议建立连接和发送数据,对于一个建立了连接的线路,一端称为服务端,另一端称为客户端,HTTP请求就是在客户端发送给服务端来请求数据的一组数据。
请求报文格式:
对于请求行,格式是这样的:
请求类型(Method)[空格]URL[空格]HTTP版本
例如,对于百度www.baidu.com
请求行:GET www.baidu.com HTTP/1.1
method比较常用的有GET/POST..
对于头部,一般使用键值对,常用的键值对可以分为通用头部,请求头部,相应头部,一般这些数据标记了一些与请求或是响应的数据相关的时间,格式等。这些东西我也没都记住,就不介绍了。
我们来分析刚才对百度的请求:
可以看到,所有前面有:的都是请求行的内容,其他的都是头部的内容。
然后我们来看看响应的结构:
状态行的结构:
HTTP版本[空格]状态码[空格]状态短语
例如,对于一个成功的请求,返回的状态行是:
HTTP/1.1 200 OK
这里所说的状态码我们最熟悉的就是一个404, NOT FOUND的标记。
下面要说一下主体,这个主体为什么说是大部分都有呢?因为这个位置的内容就是客户端请求的数据,服务端将请求的数据在这里发送回来,但是某些情况下,因为在HTTP协议中定义了一个有关cache的内容,我们可以吧请求和响应对应起来,发生请求的时候携带一个本地是否有之前响应的缓存,如果有就与服务端的参数对比,如果没有更改,那么服务端返回的状态码是304,此时就不再返回主体数据,只需要从缓存中取出Entry即可。还有某些情况下4xx,5xx这些错误信息也是不携带主体的。
下面分析一下刚才对于访问百度返回的响应:
可以看到第一行就是响应的状态行,其他的都是头部信息,其中data/expires这些可以用来进行cache对比来判断是否有更改/更新,而且我们要知道,有一种部分更改的响应,在协议说明中,这种响应是和本地缓存进行合并返回给请求的。
下面我们来简要分析一下Volley的Request的结构:
因为是前期做的,可能有很多错误,请见谅。
只有Request是不能反映Volley如何进行请求的,我们还要结合Network接口来实现:
对于响应:
详细内容自行看源码即可。
相关文章推荐
- Android中Http网络请求响应基本知识
- http协议、http事务、URL、http请求的方式、响应码信息、http1.0和1.1区别
- Nginx源代码分析之HTTP请求响应基本流程(十四)
- http协议、http事务、URL、http请求的方式、响应码信息、http1.0和1.1区别
- HTTP1.1协议常用请求头和响应头内容--精简版
- http协议5---响应信息的基本格式(实现对请求信息的修改)
- Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误。
- HTTP请求的基本概念 HTTP请求头和响应头的含义
- http协议、http事务、URL、http请求的方式、响应码信息、http1.0和1.1区别
- 解决“HTTP/1.1 405 Method not allowed”问题,让静态文件响应POST请求[原创]
- Delphi的IDHTTP的基本用法
- IDHttp的基本用法(转)
- 学习笔记---Http协议的请求消息和响应消息
- 使用Filter统计Java(J2EE)的web程序http请求响应时间
- HTTP请求响应机制
- HTTP-请求和响应格式
- Http 请求发送 (post get)及 响应 实例 (http://yymmiinngg.javaeye.com/blog/154258)
- 如何使用SOCKET 发送HTTP1.1 GET POST请求包
- 理解HTTP协议的Request/Response(请求响应)模型
- 使用HttpWebRequest和HttpWebResponse在后台进行文件的请求和响应