python requests模块的Documentation表示for hooks,“如果回调函数返回一个值,则假定它将替换传入的数据。如果函数不返回任何内容,则不会影响其他内容。”
现在我试图从hook函数返回一个值(在我的例子中是int),它抛出一个异常。当返回值是没有为其定义raw()方法的对象时,这在所有情况下都有效。在
这里有一些代码def hook(resp,**kwargs):
print resp.url
return 1
def main()
s = requests.Session()
s.hooks = {"response":hook}
r = s.get("http://localhost/index.html")
以下是例外:
^{pr2}$
代码会话.py@第446行试图从源代码中提取dispatch_hook..之后的cookies# Response manipulation hooks
r = dispatch_hook('response', hooks, r, **kwargs)
# Persist cookies
extract_cookies_to_jar(self.cookies, request, r.raw)
要么文件需要更改,要么需要重新处理。最好的办法是什么?在
[更新]
根据注释,我试图返回基本response对象。结果它也不能以这种方式使用,因为它的一些字段被初始化为None。在
更新代码:def hook(resp, **kwargs):
obj = requests.Response()
return obj
现在引发异常:Traceback (most recent call last):
File "/home/talha/ws/test.py", line 88, in
main()
File "/home/talha/ws/test.py", line 75, in main
r = s.get("http://localhost/index.html")
File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 347, in get
return self.request('GET', url, **kwargs)
File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 335, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 446, in send
extract_cookies_to_jar(self.cookies, request, r.raw)
File "/usr/lib/python2.7/site-packages/requests/cookies.py", line 108, in extract_cookies_to_jar
res = MockResponse(response._original_response.msg)
AttributeError: 'NoneType' object has no attribute '_original_response'
看来我必须实现一个完整的伪响应?在