2

私は、C# のいくつかの振る舞いに気付きました。C# 5 と .NET 4.5 を使用しています。HTTPResponse オブジェクトで GetResponseStream() を呼び出すと、応答ストリームを取得できますが、同じオブジェクトで再度呼び出すと、応答が空白になります。

// Works! Body of the response is in the source variable.
HttpResponse response = (HttpWebResponse)request.GetResponse();
String source = new StreamReader(response.GetResponseStream()).ReadToEnd();

// Does Not Work. Source is empty;
String source2 = new StreamReader(response.GetResponseStream()).ReadToEnd();

上記は、問題を示すための単なる例です。

編集

これが私がやろうとしていることです。基本的に、イベントが HTTP オブジェクトにアタッチされている場合、コールバック メソッドに応答が返されます。

HttpWebResponse public Get(String url)
{
    // HttpWebRequest ...

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

    // postRequest is an event handler. The response is passed to the
    // callback to do whatever it needs to do.
    if (this.postRequest != null)
    {
        RequestEventArgs requestArgs = new RequestEventArgs();
        requestArgs.source = response;
        postRequest.Invoke(this, requestArgs);
    }

    return response;
}

コールバック メソッドで、応答の本文を確認したい場合があります。その場合、Get() が応答を返すときに、応答からのデータが失われます。

4

1 に答える 1