- application/x-www-form-urlencoded
- multipart/form-data
- application/json
- text/xml
request里面最重要的是Content-type :如果是application/json,那么request里面就把一个字符串化后的json 数据放在body里,这样服务器可以把它恢复成正确的数据结构,比如说{["ab","bc"]},到服务器端恢复出来就是String XX[],String数组。
Reuqest如果是直接发binary stream过来,服务器这端就用byte[]接收。
对于Response也一样,有字节流类型,有字符串类型(text类型),也有json转成字符串类型(另一种text类型)
HTTP/1.1 协议规定的 HTTP 请求方法有 options、get、head、post、put、delete、trace、connect这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。
HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。类似于下面这样:
- BASH
- <method> <request-URL> <version>
- <headers>
-
- <entity-body>
协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。
但是,数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 php、python 等,以及它们的 framework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。所以说到 POST 提交数据方案,包含了 Content-Type 和消息主体编码方式两部分。下面就正式开始介绍它们。
这应该是最常见的 POST 提交数据的方式了。浏览器的原生