ai didi

Python 请求模块 : urlencoding json data

转载 作者:太空狗 更新时间:2023-10-29 22:23:01 24 4
gpt4 key购买 nike

我正在开发 API 包装器。我正在尝试构建的规范中包含以下请求:

curl -H "Content-type:application/json" -X POST -d data='{"name":"Partner13", "email":"example@example.com"}' http://localhost:5000/

此请求从我设置的小型测试服务器生成以下响应,以准确查看发送的 header /参数等。这个小脚本产生:

uri: http://localhost:5000/,
method: POST,
api_key: None,
content_type: application/json,
params: None,
data: data={"name":"Partner13", "email":"example@example.com"}

所以上面是我希望我的 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)

如此简单的东西。设置 header ,并为 POST 参数创建一个字典。该字典有一个名为“数据”的条目,它是我要发送到服务器的数据的 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

所以基本上我想在 data 参数下发送的 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)

关于Python 请求模块 : urlencoding json data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15737434/

24 4 0
文章推荐: python - 难以使用 d3 和 flask 访问 json 文件
文章推荐: c# - 如何在Windows Phone 8 中连续旋转?
文章推荐: c# - “无法从用法中推断出类型参数”
文章推荐: python - Numpy:考虑项目的邻居及其在数组中的位置的快速计算
太空狗
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com