HTTP post with urllib2

cerr ron.eggler at gmail.com
Tue Aug 6 19:35:26 EDT 2013


On Tuesday, August 6, 2013 4:08:34 PM UTC-7, Joel Goldstick wrote:
> On Tue, Aug 6, 2013 at 6:52 PM, cerr <ron.eggler at gmail.com> 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'
> 
> 
> 
> What does the above line do? is it the same as req.get_method = 'PUT'

I guess so, I got this from an example.... copy & paste :x

> 
> > response = urllib2.urlopen(req, 120)
> 
> 
> 
> the docs say req should be a url.  Is it?

no, it's an instance of req = urllib2.Request()
> 
> > 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?
> 
> >
> 
> > Thank you!
> 
> > --
> 
> > http://mail.python.org/mailman/listinfo/python-list
> 
> 
> 
> KInda of ducking your questions, but the requests module is a lot
> 
> easier to use and
> 
> understand:http://docs.python-requests.org/en/latest/

But there must be a way to get this working with urllib alone...



More information about the Python-list mailing list