あるページからhtmlまたはxmlソースを取得する次の関数がありますが、403例外がある場合、コードがselectステートメントに進まないことがわかりました
Public Function GetPageHTML(ByVal URL As String, _
Optional ByVal TimeoutSeconds As Integer = 10) _
As String
' Retrieves the HTML from the specified URL,
' using a default timeout of 10 seconds
Dim objRequest As Net.WebRequest
Dim objResponse As Net.WebResponse
Dim objStreamReceive As System.IO.Stream
Dim objEncoding As System.Text.Encoding
Dim objStreamRead As System.IO.StreamReader
' Setup our Web request
objRequest = Net.WebRequest.Create(URL)
objRequest.Timeout = TimeoutSeconds * 5000
' Retrieve data from request
Try
objResponse = objRequest.GetResponse 'some times it gives an error server unavailable 503
Select Case CType(objResponse, Net.HttpWebResponse).StatusCode
Case Net.HttpStatusCode.RequestTimeout
Return "BadRequest"
Case 403
Return "BadRequest"
Case Net.HttpStatusCode.GatewayTimeout
Return "BadRequest"
Case Net.HttpStatusCode.InternalServerError
Return "BadRequest"
Case Net.HttpStatusCode.BadRequest
Return "BadRequest"
Case Net.HttpStatusCode.OK
objStreamReceive = objResponse.GetResponseStream
objEncoding = System.Text.Encoding.GetEncoding( _
"utf-8")
objStreamRead = New System.IO.StreamReader( _
objStreamReceive, objEncoding)
' Set function return value
GetPageHTML = objStreamRead.ReadToEnd()
' Check if available, then close response
If Not objResponse Is Nothing Then
objResponse.Close()
End If
Case Else
MsgBox("Case Else")
End Select
catch
Return ""
End Try
End Function
どうすればこれを修正できますか?デバッガーはこの行に例外を表示します
objResponse = objRequest.GetResponse 'some times it gives an error server unavailable 503 or 403
そのため、選択したステートメントには移動しません
また、同じ問題で2回目の試行を行うと、エラーがキャッチされず、例外メッセージが表示されません。