Python Requests post方法中data与json参数问题
1.data参数
你想要发送一些编码为表单形式的数据——非常像一个 HTML 表单。要实现这个,只需简单地传递一个字典给 data 参数。你的数据字典在发出请求时会自动编码为表单形式,header默认Content-Type: application/x-www-form-urlencoded,
发送过来的抓包到的数据格式为:‘username=amy&password=123’
如果你传递一个 string
而不是一个 dict
,那么数据会被直接发布出去,不会被编码为表单形式
例如传’{“username”: “amy”, “password”: “123”}‘,直接发出去,抓包的内容也是'{“username”: “amy”, “password”: “123”}’
2.json参数
还可以使用 json
参数直接传递,然后它就会被自动编码,header默认’Content-Type’: ‘application/json’
json发送过来的数据格式为:{“username”: “amy”, “password”: “123”}
3.实际场景中如何使用
1)对页面接口抓包,如果Content-Type:application/json,则限制接受json格式,requests中可用json方法,
或者使用data方法,headers加’Content-Type’: ‘application/json’,postdata传string格式,不会自动编码格式
2)对页面接口抓包,Content-Type:application/x-www-form-urlencoded; charset=UTF-8,则可使用data方法