urllib2 problem/bug: Request.add_header does() nothing?

Fuzzyman fuzzyman at gmail.com
Wed Jul 27 10:19:14 EDT 2005



kelio at yandex.ru wrote:
> I have a simple cgi-script on a server that prints all key-value pairs
> from a request. And it really works when i use a browser and type smth
> like http://server/cgi-bin/test?name=mike&johny=dummy. But when I use
> the following script, nothing is printed (like i type
> http://server/cgi-bin/test request in the browser).
>
> What is wrong about it? It's hard to believe there's a bug nobody's
> noticed for such a long time (I've tried Python 2.1.3 and 2.4.1 on
> Windows, and 2.2.2 on Linux).
>
> I've also tried to make a request using urllib (without 2) sending
> pairs as data in a POST request - and it also worked.
>
> Thanks for help!
>
> elio.
>
> #!/usr/bin/python
>
> import urllib2
>
> request = urllib2.Request(r"http://server/cgi-bin/test")
> request.add_header("product", "SohoCore")
> request.add_header("version", "1.1")
> request.add_header("build", "1251")
>
> reply = urllib2.urlopen(request).readlines()
>
> for i in reply:
> 	print i


The add_header method adds http headers to your http request - it
*doesn't* post any data to your CGI.

What you need to do is encode a dictionary of your parameters using
``urllib.urlencode`` (*not* urllib2) - then pass it as the second
parameter to urllib2.urlopen.

HTH

Best Regards,

Fuzzy
http://www.voidspace.org.uk/python




More information about the Python-list mailing list