I thought that a post sent all the information in HTTP headers when you used post (I'm not well informed on this subject obviously), so I'm confused why you have to urlencode() the data to a key=value&key2=value2
format. How does that formatting come into play when using POST?:
# Fail
data = {'name': 'John Smith'}
urllib2.urlopen(foo_url, data)
but
# Success
data = {'name': 'John Smith'}
data = urllib.urlencode(data)
urllib2.urlopen(foo_url, data)