["python","python-requests"]
How do I read a response from Python Requests?

I have two Python scripts. One uses the Urllib2 library and one uses the Requests library. I have found Requests easier to implement, but I can't find an equivalent for urlib2's read() function. For example: ... response = url.urlopen(req) print response.geturl() print response.getcode() data = response.read() print data Once I have built up my post url, data = response.read() gives me the content - I am trying to connect to a vcloud director api instance and the response shows the endpoints that I have access to. However if I use the Requests library as follows..... .... def post_call(username, org, password, key, secret): endpoint = '<URL ENDPOINT>' post_url = endpoint + 'sessions' get_url = endpoint + 'org' headers = {'Accept':'application/*+xml;version=5.1', \ 'Authorization':'Basic '+ base64.b64encode(username + "@" + org + ":" + password), \ 'x-id-sec':base64.b64encode(key + ":" + secret)} print headers post_call = requests.post(post_url, data=None, headers = headers) print post_call, "POST call" print post_call.text, "TEXT" print post_call.content, "CONTENT" post_call.status_code, "STATUS CODE" .... ....the print post_call.text and print post_call.content returns nothing, even though the status code equals 200 in the requests post call. Why isn't my response from Requests returning any text or content?
Requests doesn't have an equivalent to Urlib2's read(). >>> import requests >>> response = requests.get("http://www.google.com") >>> print response.content '<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage"><head>....' >>> print response.content == response.text True It looks like the POST request you are making is returning no content. Which is often the case with a POST request. Perhaps it set a cookie? The status code is telling you that the POST succeeded after all. Edit for Python 3: Python now handles data types differently. response.content returns a sequence of bytes (integers that represent ASCII) while response.text is a string (sequence of chars). Thus, >>> print response.content == response.text False >>> print str(response.content) == response.text True