本文旨在总结一个 HTTP 请求报文的各部分和 org.springframework.http 包中类的对应关系。
请求报文格式
GET / HTTP/1.1
Host: www.google.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
对应 Spring http 包中的类
- 起始行(start line)
- 请求方法:HttpMethod;
- 请求 URL:java.net.URL;
- 版本号:没有对应的类,一般是0.9,1.0和1.1。
- 首部(headers):首部一般都是键值对,有多种方式构造。
- MultiValueMap:内部结构是 Map,用以存放首部的键值对。
- HttpHeaders:继承自 MultiValueMap,提供了对所有首部元素的存取方法。
- RequestEntity.HeadersBuilder:提供了对首部常用元素的存取方法。
- 首部元素对应的一些类
- Accept:MediaType;
- Accept-Charset:java.nio.Charset;
- Allow:Set
; ...
- 实体:实体可以是任何类型。