一、响应头的Content-Type
响应头的Content-Type的决定了该使用什么方式来解析数据,这一点一般都比较了解。

二、请求头的Content-Type


我们在发送post数据的时候,由于数据放在body里面,并且可以发送很多类型的的数据,所以在这种情况下Content-Type将会非常重要,直接影响着对方如何来解析你发送的数据。
GET 请求不存在请求实体部分,键值对参数放置在 URL 尾部,因此请求头不需要设置 Content-Type 字段。

我们打开postman,点击body支持五种类型,分别是:form-data、x-www-form-urlencoded、raw、binary、GraphQL

post 请求头添加内容 Java_字段


1、form-data

我们知道在form表单中要想上传文件,那么enctype应该设置为 multipart/form-data,类似于这样:

<form method="post" enctype="multipart/form-data">
    <input type="text" name="title" value="harttle">
    <input type="file" name="avatar">
    <input type="submit">
</form>

将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。

在postman中点击form-data。新建两个键值对,并将鼠标移到任意一个key上面,会出来一个下拉箭头,你可以指定该字段值的类型,可以是文本或文件,如果你选择文件,那么value处可以选择文件。

post 请求头添加内容 Java_字段_02


post 请求头添加内容 Java_字段_03


我们切换到Headers标签页就可以看到 Content-Type,这是postman根据你选择的Body类型自动生成的。

post 请求头添加内容 Java_数据_04


点击发送,查看接收到的数据

post 请求头添加内容 Java_数据_05


boundary后面的值"--------------------------784773003720398747551891"很明显就是后面字段之间的分割符。如果是文件的话,还会标注文件的名称和类型,由此可见body里面的数据便很容易就被解析清楚了。2、x-www-form-urlencoded

将表单内的数据转换成 key-value 对,并以 & 符拼接成一个串,并且这是默认的类型。urlencoded的意思是如果最终的字符串存在非ASCII字符集的字符,将会执行 urlencode 来编码。

把鼠标移到key的字段上面并没有出现text/file的下拉框,可见,value只支持文本类型。

post 请求头添加内容 Java_字段_06


切换到 Headers

post 请求头添加内容 Java_数据_07


点击发送,查看接收的数据

post 请求头添加内容 Java_xml_08


3、raw

顾名思义就是原始数据,并且需要设置数据的类型以便对方可以正确的解析 text / javascript / json / html / xml。默认是 text。针对不同的数据类型,Headers 里面的Content-Type会有不同的值。

text 		=> text/plain
javascript 	=> application/javascript
json 		=> application/json
html 		=> text/html
xml 		=> application/xml

post 请求头添加内容 Java_xml_09


post 请求头添加内容 Java_post 请求头添加内容 Java_10


4、binary

将文件中的内容发送出去,并不会发送文件名称和类型等信息,这个与 form-data 是有区别的。Content-Type 为 text/plain

比如文本文件

post 请求头添加内容 Java_字段_11


post 请求头添加内容 Java_字段_12


图片文件

post 请求头添加内容 Java_xml_13

最后需要名称一点的是,严格来说,post的数据只会在body里面,也就是对方只会去body里面取,比如:将body置空,将参数放在url中,使用post发送,那么对方什么也收不到。

post 请求头添加内容 Java_post 请求头添加内容 Java_14


post 请求头添加内容 Java_数据_15