我尝试使用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中找到有关get / post / put / delete请求的详细信息,我发现的大部分有用信息都涉及到使用"请求" Python 2中的模块。切换到Python 2会使这更容易吗?
以下是他们在文档中提供的信息:
资源网址: URL:matchbook.com URN:/ bpapi / rest / security / session
示例请求: POST /安全/会话 { "用户名":" j_henry", "密码":" ** " }
回复示例: { " session-token":" 1418_1234567890", " user-id":1418, " account":{//与GET /帐户API响应相同。 ... }
答案 0 :(得分:0)
问题几乎可以肯定是您错误地将数据发送到API;又名你的loginReq变量。
您需要使用curl或一些等效工具来确切地确定需要发布的参数和值。
的内容curl --data "method:/bpapi/rest/security/session¶ms={username=j_henry&password=**}" https://www.matchbook.com
一旦你有了请求,你就可以开始担心实际编程了。