kev*_*vin 6 python json http python-requests
我正在研究一个API包装器.我正在尝试构建的规范中包含以下请求:
curl -H "Content-type:application/json" -X POST -d data='{"name":"Partner13", "email":"example@example.com"}' http://localhost:5000/
Run Code Online (Sandbox Code Playgroud)
这个请求从我设置的一个小测试服务器产生以下响应,以便很快地看到发送的标头/参数等.这个小脚本产生:
uri: http://localhost:5000/,
method: POST,
api_key: None,
content_type: application/json,
params: None,
data: data={"name":"Partner13", "email":"example@example.com"}
Run Code Online (Sandbox Code Playgroud)
所以上面是我希望我的python脚本在点击小测试脚本时创建的结果.
我正在使用python请求模块,这是我用过的最漂亮的HTTP库.所以这是我的python代码:
uri = "http://localhost:5000/"
headers = {'content-type': 'application/json' }
params = {}
data = {"name":"Partner13", "email":"example@exmaple.com"}
params["data"] = json.dumps(data)
r = requests.post(uri, data=params, headers=headers)
Run Code Online (Sandbox Code Playgroud)
这么简单的东西.设置标题,并为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
Run Code Online (Sandbox Code Playgroud)
基本上我想在数据参数下发送的json数据已被urlendcoded.
有谁知道如何解决这一问题?我查看了请求文档,似乎找不到自动urlencode发送数据的方法.
非常感谢,凯文
在为data关键字创建对象时,只需为json.dumps(data)的结果赋一个变量.
此外,因为HTTP POST可以接受请求正文中的url参数和数据,并且因为requests.post函数有一个名为"params"的关键字参数,所以最好使用不同的变量名来提高可读性.请求文档使用变量名称"payload",这就是我使用的内容.
data = {"name":"Partner13", "email":"example@exmaple.com"}
payload = json.dumps(data)
r = requests.post(uri, data=payload, headers=headers)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20430 次 |
| 最近记录: |