我正在开发一个API包装器。我试图建立该规范中有如下要求:Python请求模块:urlencoding json数据
curl -H "Content-type:application/json" -X POST -d data='{"name":"Partner13", "email":"[email protected]"}' http://localhost:5000/
这个请求产生从一个小的测试服务器我安装了以下回应看exatly什么头/ PARAMS等作为发送。这个小脚本生成:
uri: http://localhost:5000/,
method: POST,
api_key: None,
content_type: application/json,
params: None,
data: data={"name":"Partner13", "email":"[email protected]"}
所以这上面的是我希望我的Python脚本来创建,当它击中的小测试脚本的结果。
我正在使用python requests模块,这是我使用过的最美丽的HTTP lib。所以这里是我的Python代码:
uri = "http://localhost:5000/"
headers = {'content-type': 'application/json' }
params = {}
data = {"name":"Partner13", "email":"[email protected]"}
params["data"] = json.dumps(data)
r = requests.post(uri, data=params, headers=headers)
这么简单的东西。设置标题,并为POST参数创建一个字典。该字典有一个名为“data”的条目,它是我想发送给服务器的数据的JSON字符串。然后我打电话给这个帖子。但是,结果我的小测试脚本还给是:
uri: http://localhost:5000/,
method: POST,
api_key: None,
content_type: application/json,
params: None,
data: data=%7B%22name%22%3A+%22Partner13%22%2C+%22email%22%3A+%22example%40example.com%22%7D
所以基本上我想要的数据参数下的发送JSON数据已经urlendcoded。
有谁知道如何解决这个问题?我查看了请求文档,似乎无法找到一种不自动urlencode发送数据的方法。
非常感谢, 凯文
curl示例中的数据无效json。它是表单编码和json的混合体。 –