Переопределение urllib2. HTTPError или urllib.error. HTTPError и чтение ответа HTML так или иначе

Я получаю 'Ошибку HTTP 500: Внутренний Ошибочный ответ' Сервера, но я все еще хочу считать данные в ошибке HTML.

С Python 2.6 я обычно выбираю использование страницы:

import urllib2
url = "http://google.com"
data = urllib2.urlopen(url)
data = data.read()

При попытке использовать это на провальном URL, я получаю исключение urllib2.HTTPError:

urllib2.HTTPError: HTTP Error 500: Internal Server Error

Как я могу выбрать такие ошибочные страницы (с или без urllib2), все, в то время как они возвращают Внутренние Ошибки Сервера?

Обратите внимание, что с Python 3, соответствующее исключение urllib.error.HTTPError.

72
задан Acumenus 7 October 2016 в 04:36
поделиться

2 ответа

Ну, вы, вероятно, можете написать

@Test
public void testDivide() {
   Math math = new Math();
   int result = math.divide(20,2);
   Assert.assertNotNull(result);
}

Вот так, теперь, когда вы запустите этот тест будет неудачным, так что вы исправите ваш метод Math.divide. и добавьте случаи на следующем шаге

это очень идеальный способ, но все знают, что это не всегда так.

-121--4268441-

Это работает на меня.

- (void)viewDidDisappear:(BOOL)animated
{
    if (self.parentViewController == nil) {
        NSLog(@"viewDidDisappear doesn't have parent so it's been popped");
        //release stuff here
    } else {
        NSLog(@"PersonViewController view just hidden");
    }
}
-121--994543-

HTTPError является файловым объектом . Его можно поймать, а затем прочитать .

try:
    resp = urllib2.urlopen(url)
    contents = resp.read()
except urllib2.HTTPError, error:
    contents = error.read()
136
ответ дан 24 November 2019 в 12:38
поделиться

Если вы имеете в виду, что хотите прочитать тело 500:

request = urllib2.Request(url, data, headers)
try:
        resp = urllib2.urlopen(request)
        print resp.read()
except urllib2.HTTPError, error:
        print "ERROR: ", error.read()

В вашем случае создавать запрос не нужно. Просто выполните

try:
        resp = urllib2.urlopen(url)
        print resp.read()
except urllib2.HTTPError, error:
        print "ERROR: ", error.read()

, чтобы не переопределить urllib2.HTTPError, а просто обработать исключение.

9
ответ дан 24 November 2019 в 12:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: