Catching Errors
Alex
new_name at mit.edu
Sun Jun 10 18:11:23 EDT 2001
urllib.py is making your life easier by catching the 301 and 302 errors
-- they are redirects. Here are the relevant methods from
FancyURLopener:
def http_error_302(self, url, fp, errcode, errmsg, headers, data=None):
"""Error 302 -- relocated (temporarily)."""
# XXX The server can force infinite recursion here!
if headers.has_key('location'):
newurl = headers['location']
elif headers.has_key('uri'):
newurl = headers['uri']
else:
return
void = fp.read()
fp.close()
# In case the server sent a relative URL, join with original:
newurl = basejoin("http:" + url, newurl)
if data is None:
return self.open(newurl)
else:
return self.open(newurl, data)
def http_error_301(self, url, fp, errcode, errmsg, headers, data=None):
"""Error 301 -- also relocated (permanently)."""
return self.http_error_302(url, fp, errcode, errmsg, headers, data)
HTH.
Alex.
More information about the Python-list
mailing list