добавление заголовка в модуль запросов Python

110

Раньше я использовал httplibмодуль для добавления заголовка в запрос. Сейчас пробую то же самое с requestsмодулем.

Это модуль запроса python, который я использую: http://pypi.python.org/pypi/requests

Как я могу добавить заголовок request.postи request.getсказать, что я должен добавлять foobarключ в каждый запрос в заголовке.

неприятный
источник

Ответы:

192

Из 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)

Вам просто нужно создать dict с вашими заголовками (пары ключ: значение, где ключ - это имя заголовка, а значение - это, ну, значение пары) и передать этот dict параметру заголовков в методе .getor .post.

Так что конкретнее по вашему вопросу:

headers = {'foobar': 'raboof'}
requests.get('http://himom.com', headers=headers)
тконе
источник
2
Может быть полезно увидеть ответ, который вы отправляете и / или получаете обратно. Согласно документации по расширенному использованию запросов , используйте r.headersдля доступа к заголовкам, которые сервер отправляет обратно, и r.request.headersдля просмотра заголовков, которые вы отправляете на сервер.
Harperville
46

Вы также можете сделать это, чтобы установить заголовок для всех будущих get для объекта Session, где x-test будет во всех вызовах 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'})

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

номмер
источник