Python и urllib2: как выполнить ПОЛУЧИТЬ запрос с параметрами

Я создаю "API API", это - в основном обертка для в доме веб-сервис REST, к которому веб-приложение будет выполнять много запросов. Некоторые вызовы веб-сервиса должны быть, ПОЛУЧАЮТ, а не отправляют, но передающие параметры.

Существует ли "лучшая практика" способ закодировать словарь в строку запроса? например: ?foo=bar&bla=blah

Я смотрю на urllib2 документы, и похоже, что это решает отдельно, использовать ли POST или ДОБРАТЬСЯ на основе того, если Вы передаете параметрические усилители или нет, но возможно кто-то знает, как заставить его преобразовать словарь параметрических усилителей в ПОЛУЧИТЬ запрос.

Возможно, существует пакет для чего-то вроде этого там? Было бы замечательно, если бы это поддерживало активный, поскольку веб-сервер будет постоянно запрашивать вещи от остальных сервис.

Идеально что-то, что также преобразовало бы XML в некоторый проходимый объект Python.

Спасибо!

41
задан adamJLev 11 May 2010 в 22:33
поделиться

2 ответа

urllib.urlencode

И да, разделение труда urllib / urllib2 немного запутанно в Python 2.x.

18
ответ дан 27 November 2019 в 00:50
поделиться

Разве urllib.urlencode () недостаточно?

>>> import urllib
>>> urllib.urlencode({'foo': 'bar', 'bla': 'blah'})
foo=bar&bla=blah

РЕДАКТИРОВАТЬ:

Вы также можете обновить существующий URL:

  >>> import urlparse, urlencode
  >>> url_dict = urlparse.parse_qs('a=b&c=d')
  >>> url_dict
  {'a': ['b'], 'c': ['d']}
  >>> url_dict['a'].append('x')
  >>> url_dict
  {'a': ['b', 'x'], 'c': ['d']}
  >>> urllib.urlencode(url_dict, True)
  'a=b&a=x&c=d'

Обратите внимание, что функция parse_qs была в пакет cgi до Python 2.6

РЕДАКТИРОВАТЬ 23/04/2012:

Вы также можете взглянуть на python-requests - в конечном итоге он должен убить urllib:)

33
ответ дан 27 November 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: