Just adding to the @antileet procedure , it works the same way if you are trying to execute an HTTP POST request with a payload similar to a web service, except for you just omit the urlencode step; i.e.
import urllib, urllib2
payload = """
<?xml version='1.0'?>
<web_service_request>
<short_order>Spam</short_order>
<short_order>Eggs</short_order>
</web_service_request>
""".strip()
query_string_values = {'test': 1}
uri = 'http://example.com'
if query_string_values:
uri = ''.join([uri, '/?', urllib.urlencode(query_string_values)])
req = urllib2.Request(uri, data=payload)
assert req.get_method() == 'POST'
response = urllib2.urlopen(req)
print 'Response:', response.read()
source
share