在Python项目对接开发中,通常可能会用到使用requests进行post报文数据,双方在对接的同时还会对发送的数据进行签名计算,因此传输的数据需要对应起来。Python中使用requests发送报文数据需注意发送的数据类型是application/json还是application/x-www-form-urlencoded数据。本文地址:http://www.04007.cn/article/1194.html,未经许可,不得转载.
python使用requests进行请求时有data和json两个参数,即可以用json也可以用data。但是是有区别的。建议如果对方是使用application/json,则使用json参数发送json数据。如果对方是application/x-www-form-urlencoded,则使用data发送数据。中间最好不要使用json_dumps来处理。以免出现两边的方式没有对应起来发送了接受不到。使用json和data以及结合json_dumps有以下4种传输方式。发送和接受数据如下:本文地址:http://www.04007.cn/article/1194.html,未经许可,不得转载.
# 1。使用json, 直接传输dict数据。 >>> r = requests.post(url, json = {'key':'value'}) >>> r.json() {'data': '{"key": "value"}', 'form': {}, 'headers': { 'Content-Length': '16', 'Content-Type': 'application/json'}, 'json': {'key': 'value'}} # 2。使用json, 传输json.dumps后的数据。 >>> r = requests.post(url, json = json.dumps({'key':'value'})) >>> r.json() {'data': '"{\\"key\\": \\"value\\"}"', 'form': {}, 'headers': {'Content-Length': '22', 'Content-Type': 'application/json'}, 'json': '{"key": "value"}'} # 3。使用data, 传输json.dumps后的数据。 >>> r = requests.post(url, data = json.dumps({'key':'value'})) >>> r.json() {'data': '{"key": "value"}', 'form': {}, 'headers': {'Content-Length': '16'}, 'json': {'key': 'value'}} # 4。使用data, 直接传输dict数据。 >>> r = requests.post(url, data = {'key':'value'}) >>> r.json() {'data': '', 'form': {'key': 'value'}, 'headers': {'Content-Length': '9', 'Content-Type': 'application/x-www-form-urlencoded'}, 'json': None,}可以发现4种不同的方式,发送的data/form/json数据是不一样的,如第2种情况,对方接受到的data和json实际都是一个字符串,第4种则使用表单提交的方式。建议优先使用第1种方式。因此对接开发要先知道对方是用的什么方式接受数据。本文地址:http://www.04007.cn/article/1194.html,未经许可,不得转载.
只要传递了json参数,不管格式是json/str/dict,没有指定请求头时headers中的content-type默认为application/json。但要注意此时对方如果使用data接受数据格式会不一样,传输json.dumps后接受到的数据是一个字符串。
只传递data参数时, data为str,默认content-type为text/plain; data为dict,content-type 默认为application/x-www-form-urlencoded,此时就是表单提交数据。
用data参数提交数据时,request.body 的内容为a=1&b=2的形式,而用json参数提交数据时,{“a”:1,"b":2}的这种key-value的形式。本文地址:http://www.04007.cn/article/1194.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/1194.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |