gpt4 book ai didi

python-requests - 如何在请求(或 urllib3.response)中获取完整的服务器响应消息?

转载 作者:行者123 更新时间:2023-12-04 13:21:14 24 4
gpt4 key购买 nike

这几天我在使用 Google Sheet API 时遇到问题,我可以从 Requests(通过 requests_oauthlib 扩展)获得的所有响应消息都是 header 和 400 Bad Request。请求版本为 2.19.1。这发生在多个端点 (v4) 上,例如 spreadsheets.values.appendspreadsheets.values.batchUpdatespreadsheets.values。更新

我已经浪费了数小时来确保我已经形成了正确的数据结构但无济于事,直到那时我才意识到我没有从 API 服务器获得完整的响应消息。

r = request.Request('https://httpbin.org') 返回的 requests.Response 对象似乎来自 requests.HTTPAdapter对象,它又是 urllib3.response.HTTPResponse 的包装器。所以我尝试使用 r.reason , r.raw._original_response, r.raw._body, r.raw.msg 除了对象引用 & (或只是空字符串)。

长话短说,我放弃了一段时间,当我重新开始时,我意识到我应该尝试使用我一直忽略的 Google 的 API 资源管理器,结果是响应中的错误消息,并且 400 错误不是由于任何错误的有效负载/数据结构形式造成的。

{   "error": {
"code": 400,
"message": "Invalid data[0]: Requested writing within range [mysheet!A3:AH3], but tried writing to row [4]",
"status": "INVALID_ARGUMENT" }
}

我的问题是:

我在调试来自请求的连接响应方面是否有误?实际上有一种方法可以在请求中从服务器获取完整的原始消息,例如 curl 中的完整 Debug模式?还是仅当 API 请求来自 Google API 资源管理器时才发送此消息?

最佳答案

您要查找的错误消息位于响应正文中。这可以通过 response.text(或 response.json(),因为特定的正文是 JSON)来访问。如果,正如您的 self 回答所暗示的那样,您想从 raise_for_status() 引发的异常中获取主体,您可以通过异常的 response 属性:exception.response.textexception.response.json()

关于python-requests - 如何在请求(或 urllib3.response)中获取完整的服务器响应消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52370401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com