HTTP post with urllib2

Joel Goldstick joel.goldstick at gmail.com
Tue Aug 6 19:48:58 EDT 2013


On Tue, Aug 6, 2013 at 7:35 PM, cerr <ron.eggler at gmail.com> wrote:
> 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

That's not a very good answer!  Honest, but really.  Just because you
can cut and paste, doesn't mean you are learning to program.
>
>>
>> > 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...

I'm sure there is.  I'm not a pro at urllib, not even requests but
when I have used it, it made a lot more sense.

It got changed in python 3, so the python core group seemed not to
like how the earlier modules worked.

At any rate.  wait a while.  Someone on the list will give you more
specific advice I'm sure
> --
> http://mail.python.org/mailman/listinfo/python-list



-- 
Joel Goldstick
http://joelgoldstick.com



More information about the Python-list mailing list