urllib2.py, after receiving an HTTP response, decides if it was an error and raises an Exception, or it just returns the info. For example, you make ``urllib2.urlopen("http://www.google.com")``. If you receive 200, it's ok; if you receive 500, you get an exception raised. How it decides? Function HTTPErrorProcessor, line 490, actually says: class HTTPErrorProcessor(BaseHandler): ... if code not in (200, 206): # it prepares an error response ... Why only 200 and 206? A coworker of mine found this (he was receiving 202, "Accepted"). In RFC 2616 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) it says about codes "2xx"... This class of status code indicates that the client's request was successfully received, understood, and accepted. I know it's no difficult to work this around (you have to catch all the exceptions, and check for the code), but I was wondering the reasoning of this. IMHO, "2xx" should not raise an exception. If you also think it's a bug, I can fix it. Regards, -- . Facundo . Blog: http://www.taniquetil.com.ar/plog/ PyAr: http://www.python.org/ar/
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4