当我尝试使用Linux Ubuntu 14.04 Python 3.5.2 :: Anaconda custom(64位)上的最新Anaconda安装访问healthgraphic API时,我总是收到以下错误
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify
failed (_ssl.c:645)>
我不是程序员。我的背景=医学博士/想要使用Python来探索这个健康图表api,以帮助患者自助,但尽管花了几个小时拖网,我仍然坚持这第一步。所以,在绝望中我会向support@healthgraphic.com&amp; support寻求帮助。 stackexchange
import urllib
import json
from urllib.request import urlopen
datalink = 'https://api.healthgraphic.com/v1/symptoms/cough'
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'token': '7ho6immu3cw04sc4w8448c4okwgckkg'
}
try:
url = datalink
req = urllib.request.Request(url, headers = headers)
resp = urllib.request.urlopen(req)
respData = resp.read()
saveFile = open('withHeaders.txt','w')
saveFile.write(str(respData))
saveFile.close()
except Exception as e:
print(str(e))
验证ssl证书存在问题,我无法解决(见下文)&amp;如果你不介意的话,我希望你帮我解决一下......
设置验证=假不起作用&amp;是不安全的
安装/重新安装certifi不起作用
更新请求无效
export REQUESTS_CA_BUNDLE = / etc / ssl / certs / ca-certificates.crt不起作用
conda config --set ssl_verify /etc/ssl/certs/ca-certificates.crt不起作用
这有帮助吗?
[1] % python -c "import requests; print(requests.certs.where())"
/home/*******/anaconda3/lib/python3.5/site-packages/certifi/cacert.pem
如果您能提供帮助,我将非常感激。根据之前发布问题的经验,我想提前道歉,因为引起了不适。
RGDS,
帕特里克
答案 0 :(得分:0)
Healthgraphic重新配置了他们的服务器&amp;还指出我试图在示例中使用Get Symptoms方法,但只有Get Condition Symptoms可用于免费帐户:https://developer.healthgraphic.com/doc/reference/#condsx。那真是个难题!
无论如何,我可以连接urllib2,urllib或urllib3&amp;请求 - 我更喜欢后者。这段代码有用......
import urllib3
import json
import requests
from requests.auth import HTTPBasicAuth
http = urllib3.PoolManager(
datalink = 'https://api.healthgraphic.com/v1/conditions/acute_sinusitis/symptoms?page=1&per_page=10'
)
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'token': 'xxxx_your_token_here_xxxxxxxxxxxxxxxxxx'
}
try:
url = datalink
r = requests.get(datalink, headers=headers)
print(r.json())
except Exception as e:
print(str(e))