2014-09-02 12 views
2

В сценарии, который я создаю, я отправляю много данных в REST API.Как напечатать тело ответа на urllib2.URLError?

Сценарий довольно модульный и на верхнем уровне где-то я нахожу URLError. Мне нужно знать, что находится в теле ответа, потому что там будет сообщение об ошибке.

Есть ли способ URLError, который я могу использовать?

try: 
     (calling some function that throws URLError) 
    except urllib2.URLError, e: 
     print "Error: " + str(e.body_or_something) 

ответ

2

Да, есть. У вас есть доступ к ответу через e.readlines():

try: 
     (calling some function that throws URLError) 
    except urllib2.URLError, e: 
     print e.readlines() 
0

ВИДЕТЬ documenet: https://docs.python.org/2/library/urllib2.html#urllib2.URLError

исключения urllib2.URLError Обработчиков поднять это исключение (или производных исключениями), когда они работают в проблема. Это подкласс IOError.

Причина Причина этой ошибки. Это может быть строка сообщения или другой экземпляр исключения (socket.error для удаленных URL-адресов, OSError для локальных URL-адресов).

исключение urllib2.HTTPError Хотя будучи исключением (подкласс URLError), HTTPError также может функционировать в качестве неисключительного файла типа возвращаемого значения (то же самое, что urlopen() возвращает). Этот полезен при обработке экзотических ошибок HTTP, таких как запросы на проверку подлинности .

код HTTP-код состояния, как определено в RFC 2616. Это числовое значение соответствует значению, найденного в словаре кодов, которые содержатся в BaseHTTPServer.BaseHTTPRequestHandler.responses.

Причина Причина этой ошибки. Это может быть строка сообщения или другой экземпляр исключения.

Таким образом, вы можете получить доступ к телу ответа, когда запрос поднять urllib2.HTTPError.

Попробуйте это:

try: 
    (calling some function that throws URLError) 
except urllib2.HTTPError as e: 
    body = e.readlines() 
    print e.code, e.reason, body 
except urllib2.URLError as e: 
    print e.reason 
except: 
    sys.excepthook(*sys.exc_info()) 
Смежные вопросы