By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
449,353 Members | 1,237 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 449,353 IT Pros & Developers. It's quick & easy.

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

P: n/a
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

Jul 25 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a


ke***@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

Jul 27 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.