我正在使用import requests库发出POST请求。它在请求中添加了一些头文件,我怀疑这会导致请求失败……
r = requests.post(url, headers = {"Content-Type" : "text/zinc; charset=utf-8"}, \
cookies = {"cookie":cookie}, \
data = data)这是r.request.headers的结果...
CaseInsensitiveDict({
'Accept': '*/*',
'Content-Type': 'text/zinc; charset=utf-8',
'Accept-Encoding': 'gzip, deflate, compress',
'User-Agent': 'python-requests/2.2.1 CPython/3.4.0 Linux/3.13.0-52-generic',
'Cookie': 'cookie=mycookie; fanws="mycookie"'
})所以问题是,我如何只包含我指定的头文件呢?
发布于 2015-05-19 04:40:31
您可以使用会话来破解通过它发送的所有请求。
import requests
session = requests.Session()
session.headers = {}
response = session.post('http://example.com')
print response.request.headers发布于 2015-05-19 04:37:06
如果你真的想这样做,你可以创建一个PreparedRequest,然后在发送它之前编辑它的头。这在这里不太可能对您有帮助,但可能值得这样做,以说服自己它不会有帮助,所以…
而不是这样:
r = requests.post(url, headers = {"Content-Type" : "text/zinc; charset=utf-8"}, \
cookies = {"cookie":cookie}, \
data = data)执行以下操作:
sess = requests.Session()
req = requests.Request('GET', url,
headers={"Content-Type": "text/zinc; charset=utf-8"},
cookies={"cookie": cookie},
data=data)
preq = req.prepare()
preq.headers = {key: value for key, value in preq.headers.items()
if key in {'Content-Type', 'Cookie'}}
r = sess.send(preq)所有的更改都是在prepare中完成的。显然,您希望将cookies转换为Cookie标头,但不希望保留任何其他更改,所以我只是删除了除显式传递和Cookie之外的任何标头。当然,你可以在那里做任何你想做的事情。
https://stackoverflow.com/questions/30312200
复制相似问题