2017-08-05 114 views
0

嘗試下面的代碼來捕獲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無法獲得該狀態碼。 –

回答

2

request.GetResponse將在請求失敗時拋出異常,無論出於何種原因。

在例外中有一個Response對象,您可以在其中詢問狀態碼是什麼。請在Catch區塊中檢查ex.Response.StatusCode

+0

奇妙的帕特里克! – Alice

+0

我剛剛使用(ex.Message)作爲** ex.Response.StatusCode **拋出「響應不是System.Exception的成員。 – Alice

+1

這怎麼可能?我的答案很早就被髮布了,請參閱https:// stackoverflow.com/posts/45521295/timeline –