Python 和 urllib2 : how to make a GET request with parameters

标签 python urllib2

我正在构建一个“API API”,它基本上是一个内部 REST Web 服务的包装器,Web 应用程序将向该服务发出大量请求。 一些 Web 服务调用需要是 GET 而不是 post,而是传递参数。

是否有“最佳实践”方法将字典编码为查询字符串?例如:?foo=bar&bla=blah

我正在查看 urllib2 docs ,并且看起来它会根据您是否传递参数自行决定使用 POST 还是 GET,但也许有人知道如何使其将 params 字典转换为 GET 请求。

也许外面有这样的包?如果它支持 keep-alive 那就太好了,因为 Web 服务器会不断地从 REST 服务请求东西。

理想情况下,也可以将 XML 转换为某种可遍历的 python 对象。

谢谢!

最佳答案

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 函数在 Python 2.6 之前的 cgi 包中

2012 年 4 月 23 日编辑:

你也可以看看python-requests - 它最终应该会杀死 urllibs :)

关于Python 和 urllib2 : how to make a GET request with parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2814898/

相关文章:

python - C-contiguous fashion在caffe blob存储中意味着什么?

python - Django 表单 : setting initial value on DateField

python - urllib2 发送 postdata

python - 如何使用 Python 发送没有 'Host Header' 的请求?

Python:使用 url 从谷歌驱动器下载文件

python - 如何通过fiddler2捕获python SSL(HTTPS)连接

python - 如何使用 python subprocess 命令在不同目录中运行 shell 命令?

python - 如何定义在django中接受各种字符串的url

java - Python 的 urllib2.urlopen() 挂起与 Java ReSTLet 服务器的本地连接

Python urllib2。网址错误 : <urlopen error [Errno 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted>