簡體   English   中英

我應該如何將文本/純文本數據傳遞給python的request.post?

[英]How should I pass text/plain data to python's requests.post?

我正在嘗試在python請求中轉換此curl命令,但不確定如何傳遞數據:

curl -X POST -u "apikey:{apikey}" \
    --header "Content-Type: text/plain" \
    --data "some plain text data" \
    "{url}"

我嘗試直接傳遞字符串,並使用str.encode('utf-8')對其進行編碼,但出現錯誤415 Unsupported Media Type

這是我的代碼:

text = "some random text"
resp = requests.post(url, data=text, headers={'Content-Type': 'text/plain'}, auth=('apikey', self.apikey))

[編輯]:解決方案是不在請求中指定標題

非常感謝!

使用requests庫時,通常最好不要使用headers=關鍵字手動設置Content-Type頭。

requests在需要時為您設置此標頭(例如,發布JSON將始終導致Content-Type: application/json標頭)。

不手動設置這種類型的標頭的另一個原因是編碼 ,因為有時您應該指定類似Content-Type: text/plain; charset=utf-8 Content-Type: text/plain; charset=utf-8

關於Content-Type另一件重要事情是,發出POST請求時不需要此標頭。 RFC 2616

任何包含實體主體的HTTP / 1.1消息都應包括定義該主體媒體類型的Content-Type頭字段。 當且僅當Content-Type字段未提供媒體類型時,接收方可以通過檢查其內容和/或用於標識資源的URI的名稱擴展來嘗試猜測媒體類型。 如果媒體類型仍然未知,則接收者應將其視為“應用程序/八位字節流”類型。

因此,根據您要請求的服務器類型,此標頭可能保留為空。


抱歉,此說明有點含糊。 除非您提供目標URL,否則我無法確切解釋為什么這種方法對您有效。

暫無
暫無

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

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