我正在使用很棒的 Requests 模块来测试我为我们的一个内部项目创建的 API。我相信我已经发现了 Requests 模块本身的缺陷,或者我使用它的缺陷。
因为我们的数据不是超级敏感的,所以我们的 API 使用简单的基本 HTTP 身份验证来控制访问。当我使用 JSON 作为数据格式并使用带有 HTTPBasicAuthHandler 或 PHP 和 cURL 的 urllib2 请求 API URL 时,我将数据作为格式正确的 JSON 字符串返回 - 没问题。
但是,当我使用 Requests 模块发出相同的请求时,我得到一个编码字符串,我无法确定它是什么类型的编码。这是该字符串开头的片段:
\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\xadZ\xfb\x8f\xd3H\x12\xfeWzG\xab;\x90
以下是我与 Requests 一起使用的几行代码来重现此问题:
import requests
# api_user and api_pw not printed here for security reasons
r = requests.get('http://ourdomain.com/api/featured/school/json', auth=(api_user, api_pw))
status = r.status_code # Produces 200 every time
rawdata = r.read()
print rawdata
每次我这样做时都会得到那个编码的字符串。
谁能帮我确定:a)是什么编码(为了我自己的教化),b)为什么请求以该编码返回数据,以及如何解码和/或“修复”它。
提前致谢!