我正在尝试使用 POST 请求访问网站的 API,但它返回的是 HTML,我不知道为什么。
import urllib.request
url = 'https://matchbook.com'
loginReq = '"method": "/bpapi/rest/security/session", "params":{"username": "xxxxx","password": "xxxxx"}'
req = urllib.request.Request(url, loginReq.encode('utf-8'))
response = urllib.request.urlopen(req).read()
print (response)
这会返回一个 HTML 流,它基本上表示我正在使用不受支持的 Internet Explorer 版本,我应该考虑升级到更新的版本。
我花了一些时间在网上查找,但很难找到有关 Python 3 中获取/发布/放置/删除请求的任何详细信息,我发现的大部分有用信息都涉及使用 Python 中的“请求”模块2. 切换到 Python 2 会使这更容易吗?
这是他们在文档中提供的信息:
资源网址: 网址:matchbook.com URN:/bpapi/rest/security/session
示例请求: 发布/安全/ session { “用户名”:“j_henry”, “密码”:“**”
示例响应: { “ session token ”:“1418_1234567890”, “用户 ID”:1418, "account": {//与 GET/account API 响应相同。 ...
最佳答案
问题几乎可以肯定是您错误地向 API 发送了数据;也就是您的 loginReq 变量。
您需要使用 curl 或某种等效工具来准确确定需要发布的参数和值。类似的东西
curl --data "method:/bpapi/rest/security/session¶ms={username=j_henry&password=**}" https://www.matchbook.com
一旦收到请求,您就可以开始担心实际对其进行编程了。
关于Python 3 - 带有 urllib.request 返回 HTML 数据的 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25735314/