我想使用“tornado.httpclient.AsyncHTTPClient”向“https”网站发送“POST”请求,但得到:
HTTPError: HTTP 599: [Errno 1] _ssl.c:503: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
当我改用“urllib”时(与我不知道的url和参数、头相同),它就工作了
这样的代码:
url = r'https://**********.com/****/'
request = tornado.httpclient.HTTPRequest(url = url, method = 'POST', body = body, headers = headers)
client = tornado.httpclient.AsyncHTTPClient()
client.fetch(request, callback = on_reqeust)
tornado.ioloop.IOLoop.instance().start()
在生成http请求时添加“validate_cert=False”
似乎不需要使用curl_httpclient:
您还可以更新SimpleAsyncHTTPClient使用的CA证书文件。 它应该位于
site-packages/tornado/ca-certificates.crt
在我的例子中,将文件
/etc/ssl/certs/ca-certificates.crt
复制到tornado位置解决了这个问题。注意:如果您有有效的证书,但您的证书颁发机构不被tornado认可,这将有所帮助。
相关问题 更多 >
编程相关推荐