我正在尝试在我的 Python 程序中使用 Web API,但我不知道如何操作。
这是在 Bash/Unix 中使用命令行进行调用的示例:
wget --post-file="example.txt" "http://example.com/api" -O output_filename
如何使用 Python 的
urllib
模块复制此功能?我正在阅读该模块的文档,但不太确定如何向带有附加文件的网站发送 POST 请求。任何帮助或建议将不胜感激。
几年前我发现了一个问题的this答案,它似乎正在做一些与我想做的事情类似的事情,但当我尝试复制它时,我似乎没有得到想要的结果:
from urllib import request, parse
data = parse.urlencode('example.txt').encode()
req = request.Request('http://example.com/api', data=data)
resp = request.urlopen(req)
我强烈建议使用 requests 包而不是
urllib
。
提出
POST
请求就像这样简单:
import requests
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("https://httpbin.org/post", data=payload)
print(r.text)
输出:
{
"args": {},
"data": "",
"files": {},
"form": {
"key1": "value1",
"key2": "value2"
},
请注意,一些旧服务器需要特定编码。我必须添加这个,有效负载是一个多行 xml 字符串(用“””括起来):
payload = Payload.encode('Windows-1252')