aggiunta dell'intestazione al modulo delle richieste python


108

In precedenza ho usato il httplibmodulo per aggiungere un'intestazione nella richiesta. Ora sto provando la stessa cosa con il requestsmodulo.

Questo è il modulo di richiesta python che sto usando: http://pypi.python.org/pypi/requests

Come posso aggiungere un'intestazione a request.poste request.getdire che devo aggiungere la foobarchiave in ogni richiesta nell'intestazione.


Risposte:


188

Da http://docs.python-requests.org/en/latest/user/quickstart/

url = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}
headers = {'content-type': 'application/json'}

r = requests.post(url, data=json.dumps(payload), headers=headers)

Hai solo bisogno di creare un dict con le tue intestazioni (coppie chiave: valore dove la chiave è il nome dell'intestazione e il valore è, beh, il valore della coppia) e passare quel dict al parametro headers sul metodo .geto .post.

Quindi più specifico per la tua domanda:

headers = {'foobar': 'raboof'}
requests.get('http://himom.com', headers=headers)

2
Potrebbe essere utile vedere la risposta che invii e / o ricevi. Secondo la documentazione di Requests Advanced Usage , utilizzare r.headersper accedere alle intestazioni che il server invia e r.request.headersper visualizzare le intestazioni che si stanno inviando al server.
Harperville

44

Puoi anche farlo per impostare un'intestazione per tutte le future acquisizioni per l'oggetto Session, dove x-test sarà in tutte le chiamate s.get ():

s = requests.Session()
s.auth = ('user', 'pass')
s.headers.update({'x-test': 'true'})

# both 'x-test' and 'x-test2' are sent
s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})

da: http://docs.python-requests.org/en/latest/user/advanced/#session-objects

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.