VB.NET HTTPWEBRESPONSE WebException Обходной путь

Я пытаюсь создать простую систему входа в систему, используя файлы

Dim response As System.Net.HttpWebResponse = request.GetResponse()
        If response.StatusCode = HttpStatusCode.NotFound Then
        MsgBox("Invalid Login")
Else

My Code Here

Но когда я его отлаживаю и тестирую, он все равно выдает ошибку 404. а не всплывающее окно.

есть ли другой способ обойти это??

РЕДАКТИРОВАТЬ:

Вот мой код

        Try
        Dim response As HttpWebResponse = request.GetResponse()

        MessageBox.Show("Allgood")
    Catch ex As WebException
        If response.StatusCode = HttpStatusCode.NotFound Then
            MsgBox("Invalid Login")
        End If
               End Try
    Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
    Dim passcheck As String = sr.ReadToEnd
    Dim pass As String = PasswordTextBox.Text
    If passcheck.Contains(pass) Then
        MessageBox.Show("Welcome " + UsernameTextBox.Text)
        Form1.Show()
        Me.Close()
    Else
        MessageBox.Show("Invalid Login")

    End If

End Sub

person Ron    schedule 15.04.2012    source источник


Ответы (2)


Я считаю, что он генерирует WebException, поэтому вам нужно чтобы обернуть GetResponse в блок Try Catch и перехватить веб-исключение, а затем отобразить собственный диалог.

Dim response As System.Net.HttpWebResponse
Try
    response = request.GetResponse()

    'If it gets here, it did not throw an exception
    MessageBox.Show("It's all good.")
Catch ex as WebException
    If DirectCast(ex.Response, System.Net.HttpWebResponse).StatusCode  = HttpStatusCode.NotFound Then
        MsgBox("Invalid Login")
    End If
End Try
person John Koerner    schedule 16.04.2012
comment
Можете ли вы объяснить, как я буду это делать? - person Ron; 16.04.2012
comment
Отредактировал мой код в сообщении. - person Ron; 16.04.2012
comment
есть ли способ использовать веб-запрос, чтобы увидеть, существует ли он, прежде чем он попытается получить ответ? - person Ron; 16.04.2012
comment
@John: response будет бесполезен в блоке Catch. Исключение, которое будет выброшено, будет выдано до того, как GetResponse сможет вернуть значение для присвоения response. Вам нужно преобразовать ex.Response в HttpWebResponse и получить от этого код состояния. - person cHao; 16.04.2012

Странно, убедитесь, что ваше приложение является приложением Windows Form в свойствах проекта. Однако в качестве обходного пути вы можете использовать следующий код, чтобы распечатать его в окне вывода Visual Studio.

Debug.WriteLine("Invalid Login")

Чтобы включить «Окно вывода», перейдите в меню «Вид», затем «Вывод» или просто нажмите Ctrl+W+O.

person Marco Medrano    schedule 16.04.2012
comment
Я не совсем понимаю, что вы говорите? - person Ron; 16.04.2012
comment
Вместо MessageBox просто используйте Debug.WriteLine и проверьте вывод в Visual Studio. - person Marco Medrano; 16.04.2012