Bugs item #971965, was opened at 2004-06-13 05:00 Message generated for change (Comment added) made by jjlee You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=971965&group_id=5470
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Python Library Group: Python 2.3 Status: Open Resolution: None Priority: 5 Private: No Submitted By: Ed Watkeys (edw) Assigned to: Nobody/Anonymous (nobody) Summary: urllib2 raises exception with non-200 success codes. Initial Comment: If a server returns a code other than 200, specifically 201 (Created), urllib2.urlopen will raise an HTTPError exception. I ran into this while implementing an Atom API client, which solicits 201 responses from the server when submitting a blog post. File "/usr/local/lib/python2.3/urllib2.py", line 129, in urlopen return _opener.open(url, data) File "/usr/local/lib/python2.3/urllib2.py", line 326, in open '_open', req) File "/usr/local/lib/python2.3/urllib2.py", line 306, in _call_chain result = func(*args) File "/usr/local/lib/python2.3/urllib2.py", line 901, in http_open return self.do_open(httplib.HTTP, req) File "/usr/local/lib/python2.3/urllib2.py", line 895, in do_open return self.parent.error('http', req, fp, code, msg, hdrs) File "/usr/local/lib/python2.3/urllib2.py", line 352, in error return self._call_chain(*args) File "/usr/local/lib/python2.3/urllib2.py", line 306, in _call_chain result = func(*args) File "/usr/local/lib/python2.3/urllib2.py", line 412, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 201: Created ---------------------------------------------------------------------- Comment By: John J Lee (jjlee) Date: 2007-07-12 01:15 Message: Logged In: YES user_id=261020 Originator: NO Duplicate of 912845, please close. ---------------------------------------------------------------------- Comment By: John J Lee (jjlee) Date: 2007-03-12 00:11 Message: Logged In: YES user_id=261020 Originator: NO Whether 206 and 201 are HTTP success responses is not the question at hand. Given that the 206 behaviour was changed, I agree that other success responses should also be considered (certainly seems a mistake that e.g. 203 was not added at the same time as 206), and indeed nobody has done that. But I think backwards compatibility, the semantics of the various response codes and of urllib2, and ease of understanding, are more important than you seem to assume. I don't see a patch. In what way exactly do you propose urllib2 should be changed? Note that it's not completely obvious: e.g. a 201 received by a plain-urllib2 client would be an erroneous server response, because urllib2 is designed only for retrieving URLs, and is not intended to be a generic HTTP client. Also note that clients based on urllib2 that do support PUT, such as the Atom client you refer to, can easily implement the modified 201 handling themselves. So on the face of it, the particular issue you raise is a bug in that code, and not in urllib2. Of course, your derogatory remarks about authors / bug-fixers won't persuade anybody of anything, or get any work done. ---------------------------------------------------------------------- Comment By: John Belmonte (jbelmonte) Date: 2007-03-11 21:23 Message: Logged In: YES user_id=282299 Originator: NO Fixing this issue is not "maybe OK", it's the correct thing to do. Having an HTTP success response raise an exception is faulty behavior, and urllib2 users should not have to do silly things to work around it. It really seems like the authors of urllib2 only understood about 10% of the HTTP protocol. ---------------------------------------------------------------------- Comment By: John J Lee (jjlee) Date: 2005-05-19 21:05 Message: Logged In: YES user_id=261020 Before bug 912845 (CVS rev 1.69) added 206 to the list of response codes considered "successful" by urllib2, I'd assumed this would never be altered, for backwards-compatibility reasons. Note that this behaviour can be configured by module users, since HTTPError exceptions support the urllib2 response interface. This can be done by replacing HTTPErrorProcessor, or by replacing HTTPDefaultErrorHandler, or catching the exception "manually". But maybe since the 206 issue was considered a valid bug fix, this is OK too. If so, it would be best if the other 20x responses were also considered at the same time. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=971965&group_id=5470 _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com