0

応答から HttpStatusCode を取得する際に小さな問題があります。問題は、ファイルが存在する場合に応答が返され、読み取りステータスを読み取ることができることですが、ファイルが存在しない場合、ステータス文字列を表示するように求めても、ステータスが表示されません。これが私のコードです:

 Dim urls As New List(Of String)
        urls.Add("http://www.domain.com/test.php")
        urls.Add("http://www.domain.com/test2.php")
        urls.Add("http://www.domain.com/index.php")


        For Each Url As String In urls
            Dim response As HttpWebResponse = Nothing
            Try
                Dim request As HttpWebRequest = Net.HttpWebRequest.Create(Url)
                request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/4.0 (.NET CLR 3.5.30729)"
                request.Method = "GET"
                response = request.GetResponse()

            Catch webex As WebException
            End Try

            If response.StatusCode = HttpStatusCode.OK = True Then
                MsgBox("File Url is correct: " & response.StatusCode.ToString)
            ElseIf response.StatusCode = HttpStatusCode.NotFound = True Then
                MsgBox("File Url is incorrect: " & Url)
            Else
                MsgBox(response.StatusCode.ToString)
            End If
        Next
4

3 に答える 3

2

問題は、ファイルが存在しない場合に WebException が生成され、コードがこれらの例外を黙って「飲み込んでいる」ことです。すなわち。それはそれをキャッチし、何もしません。

catch ステートメント内のエラーをチェックするコードを追加する必要があります。

これは、.NET で 404 エラーを適切にキャッチする方法 (ただし、VB ではなく C#)の複製である可能性があります。

于 2013-07-11T13:25:25.367 に答える