Python开放登录所需API https p

2024-04-20 12:14:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试访问具有以下特征的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})

打印所有数据时返回None。你知道吗


Tags: httpscomapijsonfielddatatickerv1
2条回答

@yorah已经找到了问题的根源:为了发送HTTP请求,需要调用getresponse()。你知道吗

由于OP使用的是Python2,@yorah的代码是Python3,这在OP的环境中可能不起作用,我想用Python2修复并重构解决方案,如下所示:

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

请注意,加载响应数据需要一些时间。你知道吗

Python 2中的相关文档请参考https://docs.python.org/2.6/library/httplib.html

资料来源: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())

相关问题 更多 >