cURL和请求的行为不同(cURL提供JSON正文,请求仅提供响应代码)

时间:2019-07-03 14:55:14

标签: python python-3.x python-requests

我正在编写一个脚本来从本地Pyspark服务器提取指标。在我的代码的一部分中,requests可以很好地工作;它返回我想要的JSON数据。但是,在脚本requests的另一部分(更具体地说,req.json)仅返回

<bound method Response.json of <Response [200]>>而不是实际的JSON数据(与req.json()相同)。

将请求发送给您的URL是 http://localhost:4040/api/v1/applications/local-1562033649191/executors/driver/threads

这就是代码行req = re.get(URL)被击中的原因,这就是我在命令行中使用cURL测试的URL。结果不同。

我检查了req.url是否与正在被URL匹配的URL相匹配。

编辑:相关代码:

    # collect JSON from each given executor by the executor's respective URL
    for url in appExecutorIDURLs:
        req = re.get(url)
        print(req.json)

appExecutorIDURLs当前返回一个元素列表:

['http://localhost:4040/api/v1/applications/local-1562033649191/executors/driver/threads']

有人对此有任何见解吗?

1 个答案:

答案 0 :(得分:0)

调用req.json()时是否添加了括号? req.json询问请求对象的属性,它没有调用json()方法。

或者,您可以使用

查看响应正文
response = requests.get('url', ...)
response.content

尽管这不会将响应主体本身转换为字典。

希望这会有所帮助!