私は、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() が応答を返すときに、応答からのデータが失われます。