Python 3 - 使用urllib.request返回HTML数据的POST请求

时间:2014-09-09 01:07:36

标签: python api post python-3.x urllib

我尝试使用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响应相同。 ... }

1 个答案:

答案 0 :(得分:0)

问题几乎可以肯定是您错误地将数据发送到API;又名你的loginReq变量。

您需要使用curl或一些等效工具来确切地确定需要发布的参数和值。

的内容
curl --data "method:/bpapi/rest/security/session&params={username=j_henry&password=**}" https://www.matchbook.com

一旦你有了请求,你就可以开始担心实际编程了。