qme*_*eus 5 python http python-3.x python-requests
我试图curl在 python 请求中转换这个命令,但我不确定我应该如何传递数据:
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: text/plain" \
--data "some plain text data" \
"{url}"
Run Code Online (Sandbox Code Playgroud)
我试图直接传递字符串并对其进行编码,str.encode('utf-8')但出现错误 415Unsupported Media Type
这是我的代码:
text = "some random text"
resp = requests.post(url, data=text, headers={'Content-Type': 'text/plain'}, auth=('apikey', self.apikey))
Run Code Online (Sandbox Code Playgroud)
[编辑]:解决方案是不在请求中指定标头
非常感谢!
使用requests库时,通常最好不要Content-Type使用headers=关键字手动设置标题。
requests如果需要,将为您设置此标头(例如,发布 JSON 将始终导致Content-Type: application/json标头)。
不手动设置此类标头的另一个原因是编码,因为有时您应该指定类似Content-Type: text/plain; charset=utf-8.
更重要的一点Content-Type是,发出 POST 请求不需要此标头。RFC 2616:
任何包含实体主体的 HTTP/1.1 消息都应该包含一个 Content-Type 头字段,用于定义该主体的媒体类型。当且仅当 Content-Type 字段未给出媒体类型时,接收者可以尝试通过检查其内容和/或用于标识资源的 URI 的扩展名来猜测媒体类型。如果媒体类型仍然未知,则接收者应该将其视为类型“application/octet-stream”。
因此,根据您向其发出请求的服务器类型,此标头可能会留空。
抱歉这个解释有点含糊。除非您提供目标 URL,否则我无法准确解释为什么这种方法对您有用。
| 归档时间: |
|
| 查看次数: |
10464 次 |
| 最近记录: |