【发布时间】:2020-11-19 21:24:49
【问题描述】:
我很难找到与 curl 命令等效的 python 请求,该命令将正文中的数据作为 JSON 发送。
curl 命令看起来像
curl -X POST -d '{"key1": "value1", "key2": "value2"}' http://localhost:8080/myapi
通过 CURL 请求,Server(python) 获取 requset.form 中的数据,如下所示
ImmutableMultiDict([('{"key1": "value1", "key2": "value2"}', '')])
但是当发送相同的 post 请求时,比如使用 python 的 request 模块
response = requests.post("http://localhost:8080/myapi", data=json.dumps({
"key1": "value1", "key2": "value2"))
从服务器端,我看到类似的内容
ImmutableMultiDict([('key1', 'value1'), ('key2', 'value2')]) and its type is : <class 'werkzeug.datastructures.ImmutableMultiDict
我有点困惑为什么使用 requests.post 的请求与使用 curl 请求相比在服务器端有不同的内容,有人可以帮助理解和可能的解决方案
问题已通过在 curl 和从请求模块发出的请求中添加“Content-Type:application/json”来解决。另外,我曾经检查过request.form中的数据,但是当我使用request.data时意识到它正在工作,python新手所以错过了这个,谢谢。
【问题讨论】:
-
您的代码在语法上无效,而且这两个输出似乎相同,所以我不确定您在问什么。
-
嗨@jonrsharpe,很抱歉这是一个复制粘贴错误,更新了正确的,谢谢
-
如果在 curl 中设置正确的
Content-Type标头会发生什么? -
@jonrsharpe,当我设置 -H "Content-Type:application/json" 时,我没有收到服务器端数据中出现的任何数据:ImmutableMultiDict([]),类型为:
标签: python python-3.x curl python-requests