2010-12-12 2 views
1

Я пытаюсь использовать JSON-ответ, но у меня одно очень странное поведение. Конечной точкой является приложение Java, работающее на Tomcat. Я хочу, чтобы загрузить по следующему адресуНеожиданное поведение с Python urllib

http://opendata.diavgeia.gov.gr/api/decisions?count=50&output=json_full&from=1 

, используя Рубин открытым URI я загружаю JSON. Если я попаду в браузер, я все равно получаю ответ. После того, как я пытаюсь использовать URLLIB или urllib2 Python «s я получаю сообщение об ошибке

javax.servlet.ServletException: Could not resolve view with name 'jsonView' in servlet with name 'diavgeia-api' 

Он с довольно странным, и я предполагаю, что ошибка заключается в сервере API. Любые намеки?

+0

Подсказка: если это имеет какое-либо отношение к urllib, вы увидите исключение urllib ... –

+0

Показать код. – jonesy

+0

Когда я вытаскиваю данные из браузера, я получаю json, но при использовании зависания командной строки я получаю XML. Предлагает, что на сервере происходит что-то странное. –

ответ

5

сервер, кажется, нужен «Принять» заголовок:

>>> print urllib2.urlopen(
... urllib2.Request(
...  "http://opendata.diavgeia.gov.gr/api/decisions?count=50&output=json_full&from=1", 
...  headers={"accept": "*/*"})).read()[:200] 
{"model":{"queryInfo":{"total":117458,"count":50,"order":"desc","from":1},"expandedDecisions":[{"metadata":{"date":1291932000000,"tags":{"tag":[]},"decisionType":{"uid":27,"label":"ΔΑΠΑΝΗ","extr 
0

Две возможности, ни один из которых держат воду:

  • Сервер готов использовать HTTP 1.1 только (который URLLIB по-видимому, не поддерживает, но urllib2 делает)
  • Это делает пользовательский агент нюхают, и отказ от Python (я пытался использовать строку UA Firefox, вместо этого, но он все же дал мне ошибку)
+0

Я тоже попробовал urllib2. Кажется, SimonJ понял это правильно! Thanx – PanosJee

Смежные вопросы