Http协议

Http

TCP套接字传输

超时

请求超时(未连接到服务器)

  • 网络不好
  • 等待时长为5秒

响应超时(连接到服务器)

  • 服务端连接后挂掉
  • 服务端处理响应时间过长
  • TimeOut: 30 (单位秒)

Connection

Http协议建立在TCP之上,若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

  • connection: keep-alive (长连接HTTP 1.1 默认值)
  • connection: close (短连接HTTP 1.0默认值)
  • keep-alive: timeout=20 (长连接TCP通道保持20秒)
  • keep-alive: max=10 (长连接TCP通道保持10次请求便断开)

Http Request

  • 请求行
  • 请求头
  • 空行(不可省)
  • 请求体(可无)

Http Response

  • 状态行
  • 消息报头
  • 空行
  • 响应体

Content-Type

MediaType,即是Internet Media Type,互联网媒体类型,在Http协议消息头中,使用Content-Type来表示请求体中的媒体类型信息。

格式

类型格式:type/subtype(;parameter)? type

常见类型

标识 类型 描述
text/html HTML格式
text/plain 纯文本格式
text/xml XML格式
image/gif gif图片格式
image/jpeg jpg图片格式
image/png png图片格式
application/xhtml+xml XHTML格式
application/xml XML数据格式
application/atom+xml Atom XML聚合格式
application/json
application/pdf
application/msword

application/octet-stream

  1. 只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组)。
  2. 属于HTTP规范中Content-Type的一种。

application/x-www-form-urlencoded

  1. 不属于http content-type规范,通常用于浏览器表单提交,数据组织格式:name1=value1&name2=value2,post时会放入http body,get时,显示在在地址栏。
  2. 当actionw为post时候,表单数据被编码为名称/值对。这是标准的编码格式。(在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。)
  3. 当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2…),然后把这个字串append到url后面,用?分割,加载这个新的url。(注意是浏览器自动的操作,实际编码中不可以。)

multipart/form-data

  1. 既可以提交普通键值对,也可以提交(多个)文件键值对。
  2. HTTP规范中的Content-Type不包含此类型,只能用在POST提交方式下,属于http客户端(浏览器、java httpclient)的扩展。
  3. 通常在浏览器表单中,或者http客户端(java httpclient)中使用。
  4. 格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
POST http://www.icyrene.cn/
Host: 192.168.0.201:8694
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="name1"

value1
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="name2"

value2
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file1"; filename="94b5b232gw1ewlx3p595wg20ak0574qq.gif"
Content-Type: image/gif


----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file2"; filename="1443175219259.jpg"
Content-Type: image/jpeg


----WebKitFormBoundary7MA4YWxkTrZu0gW