我在尝试从旧版本的 python-requests (0.14) 切换到较新版本(1.1、1.2 等)时遇到问题。问题是我们有一个使用以下库在 twitter 上发布图像的系统:https://github.com/maraujop/requests-oauth
主要问题在于这行代码:
# This is taken from the documentation of the library mentioned above
session = requests.session(hooks={'pre_request': oauth_hook})
session.post(...)
由于 Session 构造函数不再接受 hooks 参数。我发现 post 方法虽然接受了 hooks 参数并修改了如下代码:
session = requests.session()
session.post(..., hooks={'pre_request': oauth_hook})
这比以前好,但是 pre_request 不再被新版本的 python-requests 接受(你可以在 requests 0.14 的文档中找到这个钩子(Hook),但在任何新版本中都找不到)。有人可以帮忙吗?
最佳答案
您需要自己创建请求对象,将其传递给钩子(Hook),然后对其调用 .prepare()
:
import requests
request = requests.Request('POST', url, ...)
request = oauth_hook(request)
prepared = request.prepare()
然后发送:
session = requests.session()
resp = session.send(prepared)
关于Python 请求库 pre_request 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15765210/