【问题标题】:Using requests in Python to process GET request在 Python 中使用请求处理 GET 请求
【发布时间】:2023-04-24 08:39:01
【问题描述】:

我发布了另一个问题,但在 cmets 部分把它弄得有点乱。基本上,我正在尝试使用 Python 中的 requests 库来完成我通常会使用 CURL 来处理对 API 的 GET 请求。根据我从一个非常有帮助的人那里学到的知识,我可以通过执行以下操作来处理请求以及授权标头:

我通常使用的原始 CURL 命令:

curl -X GET -H 'Authorization: exapi:111:58d351234e1a:LA2' 'http://api.example.com/v1.14/user?id=1234'

这是我用于脚本的 Python 代码:

import requests
import json

url = "http://api.example.com/v1.14/user?id=1234"
headers = {"Authorization": "exapi:111:58d351234e1a:LA2"}

response = requests.get(url, headers=headers)

print response.json

但是,当我运行我的代码时,我收到了bound method response.json of <response [200]>,而不是我期望从 GET 获得的数据。有人可以帮我弄清楚我在这里做错了什么吗?我猜我的标题做错了,但我不确定。

【问题讨论】:

  • 这与您的标题无关。 response.json 是一个方法,你必须这样称呼它:response.json()
  • 啊,对……这很有道理。谢谢。

标签: python python-2.7 python-requests


【解决方案1】:

正如@juanpa.arrivilaga 已经提到的那样,正如printed 消息中明确指出的那样,您需要调用绑定的json 方法。混淆的来源很可能来自content,这是一个属性。

response.json()  # method
response.content # attribute

【讨论】:

  • 如果你这样做,你也可以摆脱import json
【解决方案2】:

如何显式使用 json 模块:

data = json.loads(response.text)
print data

【讨论】:

  • 为什么不直接使用方法呢?
  • 不要像作者那样将.text.json() 方法混用。