在 Python 中,我想用 HTTP 而不是 HTTPS 做休息请求,包似乎不同意
in Python, I want to do rest requests with HTTP and NOT with HTTPS, packages don't seem to agree
我试过使用请求:
url = 'http://bot' # this is a local service
import requests
r = requests.get(url)
然后我得到
requests.exceptions.SSLError: HTTPSConnectionPool(host='bot', port=443)
我指定了 HTTP,而不是 HTTPS,但它尝试使用 SSL 连接。
所以,我尝试了 httplib2:
url = 'http://bot' # this is a local service
response, content = http.request(url, "GET")
我得到:
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)
我不知道为什么对HTTPS有一种执念,但我不想。它是开发中的本地服务 运行,它是纯 HTTP。将“:80”添加到 url 不会改变任何内容。
当使用 CURL 或 C# 访问同一服务时,通过 HTTP,没问题。
我如何告诉 python 库我想要一个纯 HTTP 连接而不是别的?
使用 requests
库并添加 ssl 验证选项。您的请求行应如下所示:
r = requests.get(url, verify = False)
尝试禁用SSL_VERIFICATION
r = requests.get(url, verify = False)
我试过使用请求:
url = 'http://bot' # this is a local service
import requests
r = requests.get(url)
然后我得到
requests.exceptions.SSLError: HTTPSConnectionPool(host='bot', port=443)
我指定了 HTTP,而不是 HTTPS,但它尝试使用 SSL 连接。
所以,我尝试了 httplib2:
url = 'http://bot' # this is a local service
response, content = http.request(url, "GET")
我得到:
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)
我不知道为什么对HTTPS有一种执念,但我不想。它是开发中的本地服务 运行,它是纯 HTTP。将“:80”添加到 url 不会改变任何内容。
当使用 CURL 或 C# 访问同一服务时,通过 HTTP,没问题。
我如何告诉 python 库我想要一个纯 HTTP 连接而不是别的?
使用 requests
库并添加 ssl 验证选项。您的请求行应如下所示:
r = requests.get(url, verify = False)
尝试禁用SSL_VERIFICATION
r = requests.get(url, verify = False)