我有一个现有的应用程序,它使用PyCurl通过REST类型接口下载gzip压缩的JSON数据。这种方法效果很好,但对于所需的用途来说太慢了。
我试图获得可以使用连接池的等效解决方案。我有一个处理请求的简单示例,但我不知道如何检索返回的标头所说的附加gzip压缩文件。
我目前的示例代码:
#!/usr/bin/python
import requests
headers = {"Authorization" : "XXX thisworksIgeta200Response",
"Content-type" : "application/json",
"Accept" : "application/json"}
r = requests.get("https://longickyGUIDyURL.noname.com",headers=headers,verify=False,stream=True)
data = r.raw.read(decode_content=True)
print data
这会产生一个HTML页面,而不是我想要的JSON输出。相关的返回标题如下所示:
'content-disposition': 'attachment; filename="9d5c3c68-0e88-4b2d-88b9-94534b6cb80d"
'content-encoding': 'gzip',
所以:请求或urllib4(尝试了一下,但没有看到很多示例或大量文档)或其他什么?
欢迎任何指导或建议!
答案 0 :(得分:0)
如果用户请求将内容保存到文件中,则建议使用Content-Disposition response-header字段作为原始服务器建议默认文件名的方法(rfc2616)
标题中的文件名只不过是浏览器应该将其保存为的建议。那里没有其他文件。你得到的内容就是全部。 content-encoding: gzip
标头意味着页面的内容是gzip编码的传输,但requests
模块将为您解码。
因此,如果它是HTML并且你期待JSON,那么你可能有错误的URL。