Я использую замечательный модуль запросов для тестирования API, который я создал для одного наших внутренних проектов. Я считаю, что обнаружил недостаток либо в самом модуле «Запросы», либо в моем использовании его.
Поскольку наши данные не являются сверхчувствительными, наш API использует простую базовую HTTP-аутентификацию для управления доступом. Когда я делаю запросы URL-адреса API, используя JSON в качестве формата данных и либо urllib2 с HTTPBasicAuthHandler, либо PHP и cURL, я возвращаю свои данные в виде правильно отформатированной строки JSON - без проблем.
Однако, когда я делаю тот же запрос с помощью модуля «Запросы», я получаю закодированную строку и не могу определить, какой это тип кодировки. Вот фрагмент начала этой строки:
\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\xadZ\xfb\x8f\xd3H\x12\xfeWzG\xab;\x90
Вот несколько строк кода, которые я использую с запросами, чтобы воспроизвести эту проблему:
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
И я получаю эту закодированную строку каждый раз, когда делаю это.
Может ли кто-нибудь помочь мне определить: а) что это за кодировка (для моего собственного назидания) и б) почему запросы возвращают данные в этой кодировке и как ее декодировать и/или «исправить».
Заранее спасибо!