[英]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.