Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTTPS request in Python

Tags:

python

https

I would like to connect to a site via HTTPS in Python 3.2.

I tried

    conn = http.client.HTTPSConnection(urlStr, 8443)
    conn.putrequest('GET', '/')
    response = conn.getresponse()  
    print(response.read())

but I get

    http.client.ResponseNotReady: Request-started

Anyone know what the problem is?

like image 423
user1190650 Avatar asked Mar 23 '12 12:03

user1190650


2 Answers

instead of putrequest, you can use request

conn.request('GET', '/')
resp = conn.getresponse()
print(resp.read())
like image 39
Corey Goldberg Avatar answered Oct 11 '22 17:10

Corey Goldberg


First of all, if you just want to download something and don't want any special HTTP requests, you should use urllib.request instead of http.client.

import urllib.request
r = urllib.request.urlopen('https://paypal.com/')
print(r.read())

If you really want to use http.client, you must call endheaders after you send the request headers:

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

As a shortcut to putrequest/endheaders, you can also use the request method, like this:

import http.client
conn = http.client.HTTPSConnection('paypal.com', 443)
conn.request('GET', '/') # <---
r = conn.getresponse()
print(r.read())
like image 159
phihag Avatar answered Oct 11 '22 19:10

phihag