ajout d'un en-tête au module de requêtes python

109

Auparavant, j'utilisais le httplibmodule pour ajouter un en-tête dans la requête. Maintenant, j'essaye la même chose avec le requestsmodule.

Voici le module de requête python que j'utilise: http://pypi.python.org/pypi/requests

Comment puis-je ajouter un en-tête au request.postet request.getdire que je dois ajouter une foobarclé dans chaque demande dans l'en-tête.

discky
la source

Réponses:

189

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

Il vous suffit de créer un dict avec vos en-têtes (paires clé: valeur où la clé est le nom de l'en-tête et la valeur est, eh bien, la valeur de la paire) et de transmettre ce dict au paramètre headers de la méthode .getou .post.

Donc plus spécifique à votre question:

headers = {'foobar': 'raboof'}
requests.get('http://himom.com', headers=headers)
tkone
la source
2
Il peut être utile de voir la réponse que vous envoyez et / ou recevez en retour. Selon la documentation Requests Advanced Usage , utilisez r.headerspour accéder aux en-têtes que le serveur renvoie et r.request.headerspour afficher les en-têtes que vous envoyez au serveur.
harperville
46

Vous pouvez également le faire pour définir un en-tête pour toutes les futures obtentions de l'objet Session, où x-test sera dans tous les appels 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'})

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

nommer
la source