Предотвращение ошибок при выполнении веб-запроса в VB.Net

Я получаю три ошибки, используя следующую функцию:

Private Sub readWebpage(ByVal url As String)
    Try
        Dim req As System.Net.WebRequest = System.Net.WebRequest.Create(url)
        Dim resp As System.Net.WebResponse = req.GetResponse
        If Not resp.ContentType.Contains("text/html") And Not resp.ContentType.Contains("application/xhtml+xml") Then Exit Sub
        Using Str As System.IO.Stream = resp.GetResponseStream
            Using srRead As System.IO.StreamReader = New System.IO.StreamReader(Str)
                parseHtml(srRead.ReadToEnd, url)
            End Using
        End Using
    Catch ex As Exception
        Debug.Print(ex.Message)
        Debug.Print(url)
        MsgBox(ex.Message, MsgBoxStyle.Critical, "Unable to download content from: " & url)
    End Try
End Sub

Удаленный сервер вернул ошибку: (500) Внутренняя ошибка сервера.

Сервер совершил нарушение протокола. Раздел = ResponseStatusLine

Не удалось разрешить удаленное имя: «dmoz.orgsearch».

Как я могу предотвратить эти ошибки?


person PeeHaa    schedule 26.12.2010    source источник


Ответы (1)


Вы не можете предотвратить удаленные ошибки. Лучшее, чего вы можете добиться, — это ловить исключения такими, какие вы уже есть.

Однако я бы предположил, что вы используете неверный URL-адрес - dmoz.orgsearch не существует.

Это должно было быть: http://www.dmoz.org/search?q=myquery?

Если используемый вами URL-адрес имеет неправильный формат, вы мало что можете с этим поделать.

person Oded    schedule 26.12.2010
comment
Я использую код в приложении, похожем на сканер (не совсем, но достаточно близко: P). Так где-то он нашел ссылку на dmoz.orgsearch. Правильно это или нет, потому что он нашел его динамически. - person PeeHaa; 26.12.2010
comment
@PeeHaa - я понимаю. Однако, не сделав запрос и не получив исключение, вы не узнаете, что оно неправильно сформировано. - person Oded; 26.12.2010