20

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?

0

2 Answers 2

33

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())
Sign up to request clarification or add additional context in comments.

Comments

3

instead of putrequest, you can use request

conn.request('GET', '/')
resp = conn.getresponse()
print(resp.read())

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.