1

プログラムを実行すると、次のエラーが表示されます。

タイプ 'System.NullReferenceException' の初回例外が Microsoft.VisualBasic.dll で発生しました

オブジェクト変数またはWithブロック変数が設定されていません

これが私のコードです:

    Dim rt As String = ""
    Dim out As String
    Dim wRequest As WebRequest
    Dim wResponse As WebResponse
    Dim SR As StreamReader
    Dim time As Date

    time = Now()

    Try
        wRequest = WebRequest.Create(Address)
        wRequest.Timeout = 10000
        wResponse = wRequest.GetResponse
        SR = New StreamReader(wResponse.GetResponseStream)
        rt = SR.ReadToEnd
        SR.Close()
    Catch wex As WebException

        Dim status As WebExceptionStatus = wex.Status

        If status = WebExceptionStatus.Timeout Then
            MessageBox.Show("Could not establish a connection to the selected exchange server.", "Connection Timed Out", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        ElseIf status = WebExceptionStatus.ConnectFailure Then
            MessageBox.Show("Could not establish a connection to the selected exchange server.", "Connection Failed", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        ElseIf status = WebExceptionStatus.ProtocolError Then
            MessageBox.Show("Could not establish a connection to the selected exchange server.", "Connection Protocol Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)

        End If

    End Try
4

3 に答える 3

0

私はあなたのコードをチェックしており、正常に動作しています。

ここにデモtimeがありますが、変数の宣言と文字列をWebRequest.Create()次のように少し変更しました。

Dim time As Date = Now

WebRequest.Create("https://www.google.fm")

そして、私自身の検索によると、この種のエラーについて心配することはあまりありません。以下のリンクを参照してください。

最初のチャンスの例外

于 2013-07-04T02:11:17.327 に答える
0

nullwResponse.GetResponseStreamが原因で失敗している可能性が最も高い問題です。wResponse(これはおそらく Address 変数が有効でないためです)。

追加してみる

Catch ex As Exception

    MessageBox.Show("Some other error occurred: " + ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Warning)

End Try

WebException Catch ブロックの後、問題が何であるかを確認します。

または、ブレークポイントを設定しSR = New StreamReader(wResponse.GetResponseStream)て wResponse を確認します (任意)。

于 2013-07-04T02:26:40.307 に答える
0

エラーの原因は、Address変数である可能性があります。前にプレフィックスを付けてみてくださいhttp://

例:

Address = "http://www.google.com"

詳細については、MSDN WebRequest.Create メソッド (文字列)を参照してください。

于 2013-07-04T02:04:44.013 に答える