HTTP post with urllib2

cerr ron.eggler at gmail.com
Wed Aug 7 12:20:58 EDT 2013


On Tuesday, August 6, 2013 5:14:48 PM UTC-7, MRAB wrote:
> On 06/08/2013 23:52, cerr wrote:
> 
> > Hi,
> 
> >
> 
> > Why does this code:
> 
> >
> 
> > #!/usr/bin/python
> 
> >
> 
> >
> 
> > import urllib2
> 
> > from binascii import hexlify, unhexlify
> 
> >
> 
> > host = "localhost"
> 
> > uri="/test.php"
> 
> > data ="\x48\x65\x6C\x6C\x6F\x57\x6F\x72\x6C\x64" #Hello World
> 
> > url="http://{0}{1}?f=test".format(host, uri)
> 
> > req = urllib2.Request(url, data,{'Content-Type': 'application/octet-stream'})
> 
> > req.get_method = lambda: 'PUT'
> 
> > response = urllib2.urlopen(req, 120)
> 
> > retval = response.read()
> 
> > print "RETVAL "+retval
> 
> >
> 
> >
> 
> >
> 
> > return me this:
> 
> >
> 
> > ./post.py
> 
> > Traceback (most recent call last):
> 
> >    File "./post.py", line 13, in <module>
> 
> >      response = urllib2.urlopen(req, 120)
> 
> >    File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen
> 
> >      return _opener.open(url, data, timeout)
> 
> >    File "/usr/lib/python2.7/urllib2.py", line 398, in open
> 
> >      req = meth(req)
> 
> >    File "/usr/lib/python2.7/urllib2.py", line 1116, in do_request_
> 
> >      'Content-length', '%d' % len(data))
> 
> >
> 
> >
> 
> > I don't get it, what's going on here?
> 
> >
> 
> The docs say """urllib2.urlopen(url[, data][, timeout])""".
> 
> 
> 
> You're calling it as """urllib2.urlopen(req, 120)""".
> 
> 
> 
> In other words, 'url' is req and 'data' is 120.
> 
> 
> 
> It should be """urllib2.urlopen(req, None, 120)""".

Yes, great! That did it! :)
Coming into the office in the morning, sitting down, changing this and get it working! Good way to start my day! :)

Thanks MRAB!



More information about the Python-list mailing list