Модуль запросов Python и ответы JSON - PullRequest
4 голосов
/ 09 августа 2011

Я использую удивительный Запрашивает модуль для тестирования 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

И я получаю эту закодированную строку каждый раз, когда делаю это.

Может ли кто-нибудь помочь мне определить: а) Что это за кодировка (для моего собственного назидания) и б) Почему Requests возвращает данные в этой кодировке и как их декодировать и / или «исправлять».

Заранее спасибо!

1 Ответ

6 голосов
/ 09 августа 2011

Из любопытства, что вы получаете, когда вы print r.content?

...