adicionar cabeçalho ao módulo de solicitações python

108

Anteriormente, usei o httplibmódulo para adicionar um cabeçalho na solicitação. Agora estou tentando a mesma coisa com o requestsmódulo.

Este é o módulo de solicitação Python que estou usando: http://pypi.python.org/pypi/requests

Como posso adicionar um cabeçalho ao request.poste request.getdizer que tenho que adicionar a foobarchave em cada solicitação no cabeçalho.

disco
fonte

Respostas:

188

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

Você só precisa criar um dict com seus cabeçalhos (pares chave: valor onde a chave é o nome do cabeçalho e o valor é, bem, o valor do par) e passar esse dict para o parâmetro headers no método .getou .post.

Mais específico para sua pergunta:

headers = {'foobar': 'raboof'}
requests.get('http://himom.com', headers=headers)
tkone
fonte
2
Pode ser útil ver a resposta que você envia e / ou recebe de volta. De acordo com os documentos do Requests Advanced Usage , use r.headerspara acessar os cabeçalhos que o servidor envia de volta e r.request.headerspara visualizar os cabeçalhos que você está enviando para o servidor.
Harperville
44

Você também pode fazer isso para definir um cabeçalho para todos os futuros obtidos para o objeto Session, onde x-test estará em todas as chamadas 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'})

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

nommer
fonte