Пытаюсь сделать запрос в геокодер Питоном, как-то так:
url = 'http://geocode-maps.yandex.ru/1.x/'
YANDEX_MAPS_KEY = '...' # Ключ для localhost.loc
data = u'Город Астрахань, улица Рыбинская, дом 3а' # Приходит в юникоде
import urllib
params = urllib.urlencode({'geocode': data.encode('cp1251'), 'key': YANDEX_MAPS_KEY, 'results': 1}) # Кодируем параметры
fullurl = '%s?%s' % (url, params)
response = urllib.urlopen(url, params) # Делаем запрос
xml = response.read()
response.close()
В xml попадает:
<error>
<status>400</status>
<message>missing geocode parameter</message>
</error>
При вставке fullurl в адресную строку браузера, приходит нормальный ответ
Причем раньше тот же код работал нормально. Подскажите, в чем моя ошибка?
Я в Питоне не силен, но похоже у вас запрос идет в неправильной кодировке. Либо в заголовке нужно указать что вы с windows-1251 работаете, либо отсылать данные в UTF-8