Python Requests模块与JSON响应
我正在使用很棒的 Requests模块 来测试我为我们内部项目创建的一个API。我觉得我发现了一个问题,这个问题可能是Requests模块本身的缺陷,或者是我使用它时的错误。
因为我们的数据不是特别敏感,所以我们的API使用简单的HTTP基本认证来控制访问。当我使用JSON作为数据格式,通过urllib2和HTTPBasicAuthHandler或者PHP和cURL请求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) 为什么Requests返回的数据是那种编码,怎么解码或者“修复”它。
提前谢谢大家!
1 个回答
6
出于好奇,你在运行 print r.content
时会得到什么呢?