web-dev-qa-db-fra.com

Comment lire une réponse de Python Requests?)?

J'ai deux Python. L'un utilise la bibliothèque Urllib2 et l'autre, la bibliothèque Requests .

J'ai trouvé les requêtes plus faciles à implémenter, mais je ne trouve pas d'équivalent pour la fonction read() de urlib2. Par exemple:

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

Une fois que j'ai construit mon URL de publication, data = response.read() me donne le contenu. J'essaie de me connecter à une instance de vcloud director api et la réponse affiche les ordinateurs d'extrémité auxquels j'ai accès. Cependant, si j'utilise la bibliothèque Requests comme suit .....

....

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"

....

.... les print post_call.text et print post_call.content ne renvoient rien, même si le code de statut est égal à 200 dans les demandes post-appel.

Pourquoi ma réponse à Requests ne renvoie-t-elle aucun texte ou contenu?

40
Oli

Requests n'a pas d'équivalent à read() de Urlib2.

>>> 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

Il semble que la demande POST que vous effectuez ne renvoie aucun contenu. Ce qui est souvent le cas avec une demande POST. Il s'agit peut-être d'un cookie? Le statut le code vous dit que le POST a réussi après tout.

86
aychedee