我试图访问具有以下特性的API:
协议:https
方法:“获取”
网址:“https://api.wmcloud.com/data/v1//api/equity/getEqu.json?field=&listStatusCD=&secID=&ticker=&equTypeCD=A标题:”授权:承载“
所以如果我打开网址,我就能看到所有的数据。另一方面,我访问它的代码不起作用。我的代码是:
import httplib
httpClient = httplib.HTTPSConnection('api.wmcloud.com', '443',timeout=60)
url = 'https://api.wmcloud.com/data/v1//api/equity/getEqu.json?field=&listStatusCD=&secID=&ticker=&equTypeCD=A'
token='ae8820c8eb8ccd418dd8141b4c685d2d208c58a564a9fd2c22f8c95ac6a2ef23'
alldata = httpClient.request('GET', url, headers={"Authorization": "Bearer " + token})它在打印所有数据时不返回任何数据。
发布于 2017-09-05 15:09:59
@yorah已经找到了问题的根源:为了发送HTTP请求,需要调用getresponse()。
由于OP使用Python 2,@yorah的代码在Python 3中,这在OP的环境中可能不起作用,因此我想在Python 2中修复和重构解决方案,如下所示:
import httplib, urllib, json
conn = httplib.HTTPSConnection("api.wmcloud.com", 443, timeout=60)
token = "ae8820c8eb8ccd418dd8141b4c685d2d208c58a564a9fd2c22f8c95ac6a2ef23"
headers = {"Authorization": "Bearer " + token}
params = urllib.urlencode({"listStatusCD": "L", "secID": "000001.XSHE", "ticker":"000001", "equTypeCD": "A"})
conn.request("GET", "/data/v1/api/equity/getEqu.json?" + params, "", headers)
r1 = conn.getresponse()
print r1.status, r1.reason
result = json.load(r1)
print len(result['data']) # Expect: 1请注意,加载响应数据需要一些时间。
有关Python2中的相关文档,请参阅https://docs.python.org/2.6/library/httplib.html
发布于 2017-09-05 14:56:38
来源:https://docs.python.org/3/library/http.client.html
发送request之后,您还需要:
以下是你想做的事:
import httplib
httpClient = http.client.HTTPSConnection('api.wmcloud.com', '443', timeout=60)
url = 'https://api.wmcloud.com/data/v1//api/equity/getEqu.json?field=&listStatusCD=&secID=&ticker=&equTypeCD=A'
token='ae8820c8eb8ccd418dd8141b4c685d2d208c58a564a9fd2c22f8c95ac6a2ef23'
httpClient.request('GET', url, headers={'Authorization': 'Bearer ' + token})
alldata = httpClient.getresponse()
print(alldata.read().decode())https://stackoverflow.com/questions/46057587
复制相似问题