httplib.InvalidURL: nonnumeric port: For characters in the proxypassword in URL
Phoe6
orsenthil at gmail.com
Mon Nov 13 08:07:38 EST 2006
Fredrik Lundh wrote:
Hi Fredrik,
I apologize if I offended you or have shown any
impatience. I shall try again:
> oh, please. urllib.quote is a *function*; there's no way that calling that function
> from code written for urllib2 will affect anything.
>
> but you can access urllib.quote from the urllib2 namespace too. it's actually the
> very same function:
>
> >>> urllib.quote
> <function quote at 0x00F430F0>
> >>> urllib2.quote
> <function quote at 0x00F430F0>
>
> (urllib2 imports lots of stuff from urllib)
I dont know, it does not for me.
>>> urladd = "http://example.net:80@username:|\/|pr0c"
>>> print urladd
http://example.net:80@username:|\/|pr0c
>>>import urllib2
>>> url = urllib2.quote(urladd)
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
AttributeError: 'module' object has no attribute 'quote'
>>> import urllib
>>> url = urllib.quote(urladd)
>>> print url
http%3A//example.net%3A80%40username%3A%7C%5C/%7Cpr0c
>>>
> > I dont want to import urllib, with the urllib2 itself wanted to work
> > around this piece of code.
>
> not wanting to solve a problem is a pretty lousy problem-solving strategy, really.
Sorry. :-) I shall take your advice and try to get to bottom of this
issue.
- To the piece of code, I import urllib
- use urllib.quote() to covert the proxy url to a quoted one.
and try again, I get an error:
<error>
Traceback (most recent call last):
File "C:\Python24\forge\ngwallp\ngwall.py", line 38, in ?
data = urllib2.urlopen(site)
File "C:\Python24\lib\urllib2.py", line 130, in urlopen
http://lava.nationalgeographic.com/cgi-bin/pod/wallpaper.cgi?day=13&month=11&year=06
return _opener.open(url, data)
File "C:\Python24\lib\urllib2.py", line 358, in open
response = self._open(req, data)
File "C:\Python24\lib\urllib2.py", line 376, in _open
'_open', req)
File "C:\Python24\lib\urllib2.py", line 337, in _call_chain
result = func(*args)
File "C:\Python24\lib\urllib2.py", line 573, in <lambda>
lambda r, proxy=url, type=type, meth=self.proxy_open: \
File "C:\Python24\lib\urllib2.py", line 580, in proxy_open
if '@' in host:
TypeError: iterable argument required
</error>
This is where, I gave up and wrote the previous email as not to mess up
urllib with urllib2.
The piece of code, was working properly till I changed my proxy
password to something containng '|\/|'.
- Before shooting a mail to the grooups, i kindda encoded password to
valid url characters ( %7C%5C/%7C) and tried. But this did not work.
So, I dont think this is urllib.quote() issue. I am looking for a way
as how to use the ProxyHandler with authentication in different way
than I have used below.
proxy_url_add = r'http://' + proxy_user + ':' + proxy_password + '@' +
PROXY_IP
proxy_url = urllib.quote(proxy_url_add)
proxy_support = urllib2.ProxyHandler({"http":proxy_url})
opener = urllib2.build_opener(proxy_support,urllib2.HTTPHandler)
urllib2.install_opener(opener)
Thanks for your response.
Regards,
Senthil
More information about the Python-list
mailing list