[HTTP] POST的四种提交数据方式(Content-Type)

HTTP POST方法的四种Content-Type

四种方式包括:

application/x-www-form-urlencoded (URL encoded)

multipart/form-data (键值对型数据)

application/json (Json 类型数据)

text/xml (xml)

application/x-www-form-urlencoded

其实就和GET方法在URL中添加参数的格式差不多,通过?追加参数,通过:区分键和值,通过&区分不同的键值对。

只是在POST时,把这种参数放在了HTTP Body中。

例如:

复制代码
网络请求:
POST http://httpbin.org/post HTTP/1.1
Host    httpbin.org
User-Agent  python-requests/2.24.0
Accept-Encoding gzip, deflate
Accept  */*
Content-Length  49
Content-Type    application/x-www-form-urlencoded
Connection  keep-alive

name=%E8%A5%BF%E5%9B%AD%E5%85%AC%E5%AD%90&age=666      //可以看出汉字是使用utf8编码的
------------------
原文连接:[HTTP中POST提交数据的四种方式详解](https://zhuanlan.zhihu.com/p/344743820)

multipart/form-data

这种编码方式,通常是用在客户端向服务端传送大文件数据,如:图片或者文件。

首先来解释下什么它的编码方式,首先会生成一个很长的 boundary 字符串分界线,表明下面的都是表单内容,然后紧接着跟的是表单中的第一个键值对中的名称,而后一个换行,跟着值。然后再生成一个boundary 字符串分界线,用于分割不同的键值。之后就重复以上操作,详细的流程请看下方的例子。


原文连接:HTTP中POST提交数据的四种方式详解

复制代码
网络请求:
POST http://httpbin.org/post HTTP/1.1
Host: httpbin.org
User-Agent: python-requests/2.24.0
Accept-Encoding: gzip, deflate
Accept: */*
Content-Type: multipart/form-data; boundary=e48c73a7a42e403d868095dc3d060962
Content-Length: 222
Connection: keep-alive

--e48c73a7a42e403d868095dc3d060962
Content-Disposition: form-data; name="field0"

>value1
--e48c73a7a42e403d868095dc3d060962
Content-Disposition: form-data; name="field1"

value2
--e48c73a7a42e403d868095dc3d060962--
Content-Disposition: form-data; name="field2"; filename="filename"
Content-Type: text/plain

ä½ å¥½ï¼Œè¥¿å›­å
¬å­ï½ž
--25c88ddc918d40e7a3cd5be0d62476b7--
------------------
原文连接:[HTTP中POST提交数据的四种方式详解](https://zhuanlan.zhihu.com/p/344743820)

application/json

就是HTTP Body中的数据是json格式的。

网络请求 复制代码
POST /post HTTP/1.1
Host: httpbin.org
User-Agent: python-requests/2.24.0
Accept-Encoding: gzip, deflate
Accept: */*
Content-Type: application/json
Content-Length: 62
Connection: keep-alive

"{\"name\": \"\\u516c\\u5b50\\u54e5\", \"hobby\": \"coding\"}"
------------------
原文连接:[HTTP中POST提交数据的四种方式详解](https://zhuanlan.zhihu.com/p/344743820)

text/xml

一般在SOAP协议中传输的是xml格式的表单数据。

SOAP分为两个版本,v1.1和v1.2,两者的Content-Type不同:

SOAP 版本 HTTP head 的Content-Type
v1.1 text/xml
v1.2 application/soap+xml

例如:

复制代码
POST /WebServices/WeatherWS.asmx HTTP/1.1
Host: ws.webxml.com.cn
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://WebXml.com.cn/getRegionCountry"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Body>
   <getRegionCountry xmlns="http://WebXml.com.cn/" />
 </soap:Body>
</soap:Envelope>
------------------
原文连接:[[SOAP] SOAP协议基础知识](https://blog.csdn.net/zlllc/article/details/136037314)

详细内容可以参考:
[SOAP] SOAP协议基础知识

参考

HTTP中POST提交数据的四种方式详解
[SOAP] SOAP协议基础知识

相关推荐
左手厨刀右手茼蒿1 小时前
Flutter 组件 http_requests 适配鸿蒙 HarmonyOS 实战:极简网络请求,构建边缘端轻量级 RESTful 通讯架构
网络·flutter·http
江南风月1 小时前
日志审计系统WGLOG支持syslog吗
运维·网络·日志审计
Blurpath住宅代理2 小时前
代理IP全面解析:从协议原理到高阶应用场景的技术指南
网络·静态ip·动态代理·住宅ip·住宅代理
晏宁科技YaningAI3 小时前
全球短信路由系统设计逻辑打破 80%送达率瓶颈:工程实践拆解
网络·网络协议·架构·gateway·信息与通信·paas
WIN-U64 小时前
新版华三H3C交换机配置NTP时钟步骤 示例(命令及WEB配置)
网络协议·tcp/ip·http
爱学习的小囧4 小时前
ESXi 8.0 无法选择分区方式 小白级详细解决办法
运维·服务器·网络·虚拟化·esxi8.0
F1FJJ4 小时前
什么是 Shield CLI?视频讲解:一条命令,可浏览器远程访问一切内部服务(RDP/VNC/SSH/数据库等)
运维·网络·数据库·网络协议·ssh
南湖北漠5 小时前
听说拍照的人会拿相似的鱼皮豆代替野生鹌鹑蛋拍照(防原创)
网络·人工智能·计算机网络·生活
一个有温度的技术博主5 小时前
网安实验系列四:信息收集-旁站、C段信息
网络
木下~learning5 小时前
对于Linux中等待队列和工作队列的讲解和使用|RK3399
linux·c语言·网络·模块化编程·工作队列·等待队列