快速查找和回忆Http协议必备
http请求协议的组成
- 请求行
- 消息报头
- 请求正文
请求行格式:
Method Request-URI HTTP-Version
消息报头
Content-Type
四种常见的Post Content-Type:
application/x-www-form-urlencoded 表单格式典型的key-value
1
2
3
4POST http://www.example.com HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8
title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3multipart/form-data 用表单传文件
1
2
3
4
5
6
7
8
9
10
11
12
13POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--application/json
1
2
3
4POST http://www.example.com HTTP/1.1
Content-Type: application/json;charset=utf-8
{"title":"test","sub":[1,2,3]}text/xml
1
2
3
4
5
6
7
8
9
10
11
12POST http://www.example.com HTTP/1.1
Content-Type: text/xml
<?xml version="1.0"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value><i4>41</i4></value>
</param>
</params>
</methodCall>
Accept
期望收到的数据类型,eg:Accept:image/gif,表明客户端希望接受GIF图象格式的资源;Accept:text/html,表明客户端希望接受html文本
Accept-Encoding
浏览器发送请求时,通过 Accept-Encoding 带上自己支持的内容编码格式列表;服务端从中挑选一种用来对正文进行编码,并通过 Content-Encoding 响应头指明选定的格式;浏览器拿到响应正文后,依据 Content-Encoding 进行解压。当然,服务端也可以返回未压缩的正文,但这种情况不允许返回 Content-Encoding。这个过程就是 HTTP 的内容编码机制。
三种数据压缩格式:
- DEFLATE,是一种使用 Lempel-Ziv 压缩算法(LZ77)和哈夫曼编码的数据压缩格式。定义于 RFC 1951 : DEFLATE Compressed Data Format Specification;
- ZLIB,是一种使用 DEFLATE 的数据压缩格式。定义于 RFC 1950 : ZLIB Compressed Data Format Specification;
- GZIP,是一种使用 DEFLATE 的文件格式。定义于 RFC 1952 : GZIP file format specification;
http响应内容组成
响应组成:
- 状态行
- 消息报头
- 响应正文
状态行格式:
HTTP-Version Status-Code Reason-Phrase CRLF
- HTTP-Version 表示服务器HTTP协议的版本
- Status-Code 表示服务器发回的响应状态代码;
- Reason-Phrase 表示状态代码的文本描述。
消息报头
Content-Type
实体报头域用语指明发送给接收者的实体正文的媒体类型。eg:
- text/html
- text/plain
- text/css
- text/javascript
- application/x-www-form-urlencoded
- multipart/form-data
- application/json
- application/xml
状态码:
- 1xx:指示信息–表示请求已接收,继续处理
- 2xx:成功–表示请求已被成功接收、理解、接受
- 3xx:重定向–要完成请求必须进行更进一步的操作
- 4xx:客户端错误–请求有语法错误或请求无法实现
- 5xx:服务器端错误–服务器未能实现合法的请求
Request Header && Response Header
Http工具和参考链接:
HTTP协议详解:http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html
Android之Http通信:http://blog.csdn.net/coder_pig/article/details/46312153
四种常见的POST 提交数据方式:https://imququ.com/post/four-ways-to-post-data-in-http.html
在线Http请求模拟工具:http://www.atool.org/httptest.php