requests.post请求传参问题
def post(url, data=None, json=None, **kwargs):
post请求中data&json的传参问题
用data参数提交数据时,request.body
的内容则为a=1&b=2
的这种形式;
用json参数提交数据时,request.body
的内容则为'{"a": 1, "b": 2}
'的这种形式
python在post请求中,对传进来的json值,会做如下处理:
1、会使用json模块中的dumps方法转成json数据。
2、会增加消息头中的content_type为application/json
所以,json参数不需要提前使用json模块的方法转成json字符串。
json后直接传入字典就可以了!!!
注意:
如果在传参时,提前转换成json字符串:requests.request("post",url,json=json.dumps(a),headers=headers)
在post请求中,还会再使用jsons模块转成json数据。那么此时的请求数据会在最外多了一层引号。
请求数据结果为:"{\\"pwd\\": \\"1234567890\\", \\"mobilephone\\": \\"18611000001\\"}"
而实际上我们要发送的数据是没有外层引号的,即:{\\"pwd\\": \\"1234567890\\", \\"mobilephone\\": \\"18611000001\\"}