Hinzufügen eines Headers zum Python-Anforderungsmodul

108

Früher habe ich das httplibModul verwendet, um der Anfrage einen Header hinzuzufügen. Jetzt versuche ich das gleiche mit dem requestsModul.

Dies ist das Python-Anforderungsmodul, das ich verwende: http://pypi.python.org/pypi/requests

Wie kann ich dem Header einen Header hinzufügen request.postund request.getsagen, dass ich foobarbei jeder Anforderung im Header einen Schlüssel hinzufügen muss ?

discky
quelle

Antworten:

188

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

Sie müssen nur ein Diktat mit Ihren Headern erstellen (Schlüssel: Wert-Paare, wobei der Schlüssel der Name des Headers und der Wert der Wert des Paares ist) und dieses Diktat an den Header-Parameter auf dem .getoder übergeben.post Methode .

Also genauer auf Ihre Frage:

headers = {'foobar': 'raboof'}
requests.get('http://himom.com', headers=headers)
tkone
quelle
2
Es kann hilfreich sein, die Antwort zu sehen, die Sie senden und / oder empfangen. Verwenden Sie gemäß den Dokumenten zur erweiterten Verwendung von Anforderungenr.headers den Zugriff auf die vom Server zurückgesendeten r.request.headersHeader und die Anzeige der Header, die Sie an den Server senden.
Harperville
44

Sie können dies auch tun, um einen Header für alle zukünftigen Abrufe für das Session-Objekt festzulegen, wobei x-test in allen s.get () -Aufrufen enthalten ist:

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'})

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

nommer
quelle