我刚刚注意到了C#中的一些行为,这让我有点不耐烦。我使用的是C# 5和.NET 4.5。当我在一个GetResponseStream对象上调用HTTPResponse ()时,我能够获得响应流,但是如果我在同一个对象上再次调用它,则响应是空的。
// 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()返回响应时丢失响应中的数据。
发布于 2013-07-26 22:02:55
响应流直接从网络连接读取。
一旦你读到最后(在第2行),就没有更多的数据可读了。
https://stackoverflow.com/questions/17891736
复制相似问题