Python中的HTTPS请求

use*_*650 14 python https

我想在Python 3.2中通过HTTPS连接到一个站点.

我试过了

    conn = http.client.HTTPSConnection(urlStr, 8443)
    conn.putrequest('GET', '/')
    response = conn.getresponse()  
    print(response.read())
Run Code Online (Sandbox Code Playgroud)

但我明白了

    http.client.ResponseNotReady: Request-started
Run Code Online (Sandbox Code Playgroud)

谁知道问题是什么?

phi*_*hag 25

首先,如果您只是想下载某些东西并且不想要任何特殊的HTTP请求,那么您应该使用urllib.request而不是http.client.

import urllib.request
r = urllib.request.urlopen('https://paypal.com/')
print(r.read())
Run Code Online (Sandbox Code Playgroud)

如果您确实想使用http.client,则必须endheaders在发送请求标头后调用:

import http.client
conn = http.client.HTTPSConnection('paypal.com', 443)
conn.putrequest('GET', '/')
conn.endheaders() # <---
r = conn.getresponse()
print(r.read())
Run Code Online (Sandbox Code Playgroud)

作为putrequest/ 的快捷方式endheaders,您还可以使用此request方法,如下所示:

import http.client
conn = http.client.HTTPSConnection('paypal.com', 443)
conn.request('GET', '/') # <---
r = conn.getresponse()
print(r.read())
Run Code Online (Sandbox Code Playgroud)