无法捕捉HttpWebRequest响应404错误

问题描述:

尝试下面的代码来捕获404错误页面,但似乎不工作,我的意思是404错误不会显示在响应中。只有文件存在时才会显示响应(200个http代码)!但如果文件不存在(404),如下例所示,不会显示msgbox,并且该异常也不会显示任何内容,这就是为什么我在其中插入msgbox的原因。无法捕捉HttpWebRequest响应404错误

如果您尝试从“index.html”中取出这些“111”并运行它,它将很好地显示200个http代码。

使用VS 2013,不知道,如果它是一个错误,或者因为我正在通过代理。

稍后将在家中检查代理服务器,因为我们正在使用代理服务器。

任何人都可以帮忙!

Try 
    Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("https://www.cisco.com/c/en/us/support/index111.html") 
    Dim response As System.Net.HttpWebResponse = request.GetResponse 

    If response.StatusCode = Net.HttpStatusCode.OK Then 
     MsgBox("File exist on Server") 
     MsgBox(response.StatusCode) '200 HTTP CODE 

    'Trying to catch 404 error here 
    ElseIf response.StatusCode = Net.HttpStatusCode.NotFound Then 
     MsgBox("FILE NOT FOUND ON THE SERVER") 
     MsgBox(response.StatusCode) 
    Else 
     MsgBox("NO FILE on the server") 
    End If 
Catch ex As Exception 

     'Msgbox("Error") 

End Try 
+0

您是否调试过代码并查看您使用无效url获取的响应代码? –

+0

@ChetanRanpariya这是整个问题。 OP无法获得该状态码。 –

request.GetResponse将在请求失败时抛出异常,无论出于何种原因。

在例外中有一个Response对象,您可以在其中询问状态码是什么。请在Catch区块中检查ex.Response.StatusCode

+0

奇妙的帕特里克! – Alice

+0

我刚刚使用(ex.Message)作为** ex.Response.StatusCode **抛出“响应不是System.Exception的成员。 – Alice

+1

这怎么可能?我的答案很早就被发布了,请参阅https:// *.com/posts/45521295/timeline –