Python 3 - 使用urllib.request的POST请求返回HTML数据
我正在尝试用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的“requests”模块的。换成Python 2会不会更容易呢?
这是他们在文档中提供的信息:
资源网址:
网址:matchbook.com
URN:/bpapi/rest/security/session
示例请求:
POST /security/session
{
"username": "j_henry",
"password": "**"
}
示例响应:
{
"session-token": "1418_1234567890",
"user-id": 1418,
"account": { // 和GET /account API的响应相同。
...
}
1 个回答
0
问题几乎可以肯定是你发送给API的数据不正确,也就是你的loginReq变量出了问题。
你需要使用curl或者类似的工具,来搞清楚到底需要发送哪些参数和对应的值。可以参考下面的方式:
curl --data "method:/bpapi/rest/security/session¶ms={username=j_henry&password=**}" https://www.matchbook.com
一旦你把请求弄明白了,就可以开始考虑怎么编程实现它了。