就我而言,我使用 requests
库通过 HTTPS 调用 PayPal 的 API。不幸的是,我收到了来自 PayPal 的错误,而 PayPal 支持人员无法确定错误是什么或导致它的原因。他们希望我“请提供整个请求,包括标题”。
我怎样才能做到这一点?
原文由 Chris B. 发布,翻译遵循 CC BY-SA 4.0 许可协议
就我而言,我使用 requests
库通过 HTTPS 调用 PayPal 的 API。不幸的是,我收到了来自 PayPal 的错误,而 PayPal 支持人员无法确定错误是什么或导致它的原因。他们希望我“请提供整个请求,包括标题”。
我怎样才能做到这一点?
原文由 Chris B. 发布,翻译遵循 CC BY-SA 4.0 许可协议
r = requests.get('https://api.github.com', auth=('user', 'pass'))
r
是一个回应。它有一个请求属性,其中包含您需要的信息。
r.request.allow_redirects r.request.headers r.request.register_hook
r.request.auth r.request.hooks r.request.response
r.request.cert r.request.method r.request.send
r.request.config r.request.params r.request.sent
r.request.cookies r.request.path_url r.request.session
r.request.data r.request.prefetch r.request.timeout
r.request.deregister_hook r.request.proxies r.request.url
r.request.files r.request.redirect r.request.verify
r.request.headers
给出标题:
{'Accept': '*/*',
'Accept-Encoding': 'identity, deflate, compress, gzip',
'Authorization': u'Basic dXNlcjpwYXNz',
'User-Agent': 'python-requests/0.12.1'}
然后 r.request.data
将正文作为映射。如果他们愿意,您可以使用 urllib.urlencode
转换它:
import urllib
b = r.request.data
encoded_body = urllib.urlencode(b)
根据响应的类型, .data
可能会丢失,而 .body
会出现。
原文由 Skylar Saveland 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
一个简单的方法:在最新版本的 Requests(1.x 和更高版本)中启用日志记录。
Requests 使用
http.client
和logging
模块配置来控制日志记录的详细程度,如此 处 所述。示范
从链接文档中摘录的代码:
示例输出