使用" tornado.httpclient" fetch" POST https" site get" HTTPError:HTTP 599"

时间:2013-02-26 08:47:14

标签: python httpclient httprequest tornado urllib

我想使用“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()

2 个答案:

答案 0 :(得分:1)

request = tornado.httpclient.HTTPRequest(url=url, method='POST', body=body,
                                         validate_cert=False)

在生成http请求时添加“validate_cert = False” 并且似乎不需要使用curl_httpclient:

#tornado.httpclient.AsyncHTTPClient.configure("tornado.curl_httpclient.CurlAsyncHTTPClient")

答案 1 :(得分:1)

您还可以更新SimpleAsyncHTTPClient使用的CA证书文件。 它应该位于

site-packages/tornado/ca-certificates.crt

在我的情况下,将文件/etc/ssl/certs/ca-certificates.crt复制到龙卷风位置解决了问题。

注意:如果您拥有有效证书但龙卷风无法识别您的证书颁发机构,将会有所帮助。