Pregunta ¿Cómo leo una respuesta de Python Requests?


Tengo dos scripts de Python. Uno usa el Biblioteca Urllib2 y uno usa el Biblioteca de solicitudes.

He encontrado que las Solicitudes son más fáciles de implementar, pero no puedo encontrar un equivalente para urlib2 read() función. Por ejemplo:

...
response = url.urlopen(req)
print response.geturl()
print response.getcode()
data = response.read()
print data

Una vez que he creado mi url de publicación, data = response.read() me da el contenido. Estoy intentando conectarme a una instancia api del director vcloud y la respuesta muestra los puntos finales a los que tengo acceso. Sin embargo, si uso la biblioteca de solicitudes de la siguiente manera .....

....

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"

....

....el print post_call.text y print post_call.content no devuelve nada, a pesar de que el código de estado equivale a 200 en la solicitud de llamada de solicitud.

¿Por qué mi respuesta de las solicitudes no es la devolución de texto o contenido?


21
2017-09-15 09:17


origen


Respuestas:


Las solicitudes no tienen un equivalente de Urlib2 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

Parece que la solicitud POST que está realizando no devuelve contenido. Que a menudo es el caso con una solicitud POST. Tal vez puso una galleta? El código de estado le dice que el POST tuvo éxito después de todo.


50
2017-09-15 09:34