Python 请求库 pre_request 钩子(Hook)

标签 python python-requests

我在尝试从旧版本的 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/

相关文章:

python - 如何通过请求库获取重定向的 URL 或其内容?

python - 使用 MongoDB 仅扫描集合中的 x 个实例

python - 使用 HTML 文件中的 HTTP 链接从 Django 中的 FileField 下载文件

python - 使用 pyserial 发送存储在变量中的十六进制或 ASCII 值

python - WTForms "too many values to unpack"与 SelectField

python - 多部分解析器错误 :- Invalid boundary

python - 'raw' 属性在 python 请求响应中意味着什么?

python - 使用 Beautiful Soup 和 Python 抓取 Asp.NET 网站

python - 使用 python 请求的网站访问不计入谷歌分析

python - 使用正则表达式删除相对行