簡體   English   中英

python 與 curl -d 命令的等效請求是什么?

[英]What is the equivalent request of python with curl -d command?

我很難找到與 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"}', '')])

但是當像使用python的請求模塊一樣發送相同的post請求時

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 新手所以錯過了這個,謝謝。

您是否嘗試過只發送字典而不是字符串化的 json?

r = requests.post('https://httpbin.org/post', data = {"key1": "value1", "key2": "value2"})

通過 httpbin 測試服務器運行它並運行 curl 語句會產生相同的響應(用戶代理除外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM