[ python-Feature Requests-1216944 ] Add Error Code Dictionary to urllib2

SourceForge.net noreply at sourceforge.net
Thu Jul 14 00:24:47 CEST 2005

Feature Requests item #1216944, was opened at 2005-06-08 04:45
Message generated for change (Comment added) made by rhettinger
You can respond by visiting: 

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: None
Status: Open
>Resolution: Accepted
Priority: 5
Submitted By: Mike Foord (mjfoord)
>Assigned to: Reinhold Birkenfeld (birkenfeld)
Summary: Add Error Code Dictionary to urllib2

Initial Comment:
In order to properly handle 'HTTPError's from 
urllib2.urlopen you need to map error codes to an error 

I suggest the addition of the following dictionary to do 
that  :

    # Table mapping response codes to messages; 
entries have the
    # form {code: (shortmessage, longmessage)}.
    httpresponses = {
        100: ('Continue', 'Request received, please 
        101: ('Switching Protocols',
              'Switching to new protocol; obey Upgrade 

        200: ('OK', 'Request fulfilled, document follows'),
        201: ('Created', 'Document created, URL follows'),
        202: ('Accepted',
              'Request accepted, processing continues off-
        203: ('Non-Authoritative Information', 'Request 
fulfilled from cache'),
        204: ('No response', 'Request fulfilled, nothing 
        205: ('Reset Content', 'Clear input form for further 
        206: ('Partial Content', 'Partial content follows.'),

        300: ('Multiple Choices',
              'Object has several resources -- see URI list'),
        301: ('Moved Permanently', 'Object moved 
permanently -- see URI list'),
        302: ('Found', 'Object moved temporarily -- see URI 
        303: ('See Other', 'Object moved -- see Method 
and URL list'),
        304: ('Not modified',
              'Document has not changed since given time'),
        305: ('Use Proxy',
              'You must use proxy specified in Location to 
access this '
        307: ('Temporary Redirect',
              'Object moved temporarily -- see URI list'),

        400: ('Bad request',
              'Bad request syntax or unsupported method'),
        401: ('Unauthorized',
              'No permission -- see authorization schemes'),
        402: ('Payment required',
              'No payment -- see charging schemes'),
        403: ('Forbidden',
              'Request forbidden -- authorization will not 
        404: ('Not Found', 'Nothing matches the given URI'),
        405: ('Method Not Allowed',
              'Specified method is invalid for this server.'),
        406: ('Not Acceptable', 'URI not available in 
preferred format.'),
        407: ('Proxy Authentication Required', 'You must 
authenticate with '
              'this proxy before proceeding.'),
        408: ('Request Time-out', 'Request timed out; try 
again later.'),
        409: ('Conflict', 'Request conflict.'),
        410: ('Gone',
              'URI no longer exists and has been 
permanently removed.'),
        411: ('Length Required', 'Client must specify 
        412: ('Precondition Failed', 'Precondition in 
headers is false.'),
        413: ('Request Entity Too Large', 'Entity is too 
        414: ('Request-URI Too Long', 'URI is too long.'),
        415: ('Unsupported Media Type', 'Entity body in 
unsupported format.'),
        416: ('Requested Range Not Satisfiable',
              'Cannot satisfy request range.'),
        417: ('Expectation Failed',
              'Expect condition could not be satisfied.'),

        500: ('Internal error', 'Server got itself in trouble'),
        501: ('Not Implemented',
              'Server does not support this operation'),
        502: ('Bad Gateway', 'Invalid responses from 
another server/proxy.'),
        503: ('Service temporarily overloaded',
              'The server cannot process the request due to 
a high load'),
        504: ('Gateway timeout',
              'The gateway server did not receive a timely 
        505: ('HTTP Version not supported', 'Cannot fulfill 


>Comment By: Raymond Hettinger (rhettinger)
Date: 2005-07-13 17:24

Logged In: YES 

Reinfeld, you are welcome to put this in.

Pay attention to the little details.  Look-up the http
protocol spec and use the exact spelling and exact
upper/lower letter case.  

Only include the second field of the tuple if it is
standard.  I quickly looked at a couple of different sources
and found that the "meaning" field was worded diffferently.
 If there is not a standard word-for-word official
definition, then leave that part out and just have a simple
mapping:  {500: "Internal Error", 501: "Not Implemented, ...}.


Comment By: Reinhold Birkenfeld (birkenfeld)
Date: 2005-06-08 11:38

Logged In: YES 

+1. This would simplify delivering messages to users.


You can respond by visiting: 

More information about the Python-bugs-list mailing list