Android DEV Http协议手册

快速查找和回忆Http协议必备

http请求协议的组成

  • 请求行
  • 消息报头
  • 请求正文

请求行格式:

Method Request-URI HTTP-Version

消息报头

Content-Type

四种常见的Post Content-Type:

  • application/x-www-form-urlencoded 表单格式典型的key-value

    1
    2
    3
    4
    POST 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=3
  • multipart/form-data 用表单传文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    POST 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
    4
    POST 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
    12
    POST 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

状态码查询:http://www.bkjia.com/headlines/491296.html

Maydaaa wechat
欢迎添加微信好友共同交流学习!
坚持原创技术分享,您的支持将鼓励我继续创作!