I\'m building an \"API API\", it\'s basically a wrapper for a in house REST web service that the web app will be making a lot of requests to. Some of the web service calls need
Is urllib.urlencode() not enough?
>>> import urllib
>>> urllib.urlencode({'foo': 'bar', 'bla': 'blah'})
foo=bar&bla=blah
EDIT:
You can also update the existing 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'
Note that parse_qs
function was in cgi
package before Python 2.6
EDIT 23/04/2012:
You can also take a look at python-requests - it should kill urllibs eventually :)
import urllib
data = {}
data["val1"] = "VALUE1"
data["val2"] = "VALUE2"
data["val3"] = "VALUE3"
url_values = urllib.urlencode(data)
url = "https://www.python.org"
print url + "?" + url_values
The url_values
is an encoded values and can be used to post to the server along with url as a query string(url+"?"+url_values)
.
urllib.urlencode
And yes, the urllib
/ urllib2
division of labor is a little confusing in Python 2.x.