Передать объект JSON в URL-адрес с запросами

Итак, я хочу использовать отличный модуль запросов Кеннета . Столкнулся с этой проблемой при попытке использовать Freebase API .

По сути, их API выглядит так:

https://www.googleapis.com/freebase/v1/mqlread?query=...

как запрос, они ожидают объект JSON, вот тот, который вернет список вин с их страной и процентным содержанием алкоголя:

[{
  "country":       null,
  "name":          null,
  "percentage_alcohol": null,
  "percentage_alcohol>": 0,
  "type":          "/food/wine"
}]​

Конечно, мы нам придется избегать этого, прежде чем передать его URL-адресу, поэтому фактический запрос будет выглядеть так:

 fullurl = 'https://www.googleapis.com/freebase/v1/mqlread?query=%5B%7B%22percentage_alcohol%3E%22%3A+0%2C+%22country%22%3A+null%2C+%22type%22%3A+%22%2Ffood%2Fwine%22%2C+%22name%22%3A+null%2C+%22percentage_alcohol%22%3A+null%7D%5D'

Теперь,

r = requests.get(fullurl)
print r.status_code
>>> 400

, потому что сайт заявляет, что не может проанализировать запрос.

r2 = urllib2.urlopen(fullurl)
print r2.getcode()
>>> 200

Здесь нет проблем, я получаю надлежащий доход. Интересно,

# This is the url of our requests.get request
print urllib2.urlopen(r.url).getcode() 
>>> 200

Почему? Я неправильно использую модуль? Или это ошибка в requests?

6
задан Manuel Ebert 8 May 2012 в 17:21
поделиться