首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我只能调用GetResponseStream()一次

为什么我只能调用GetResponseStream()一次
EN

Stack Overflow用户
提问于 2013-07-26 22:01:20
回答 1查看 549关注 0票数 3

我刚刚注意到了C#中的一些行为,这让我有点不耐烦。我使用的是C# 5和.NET 4.5。当我在一个GetResponseStream对象上调用HTTPResponse ()时,我能够获得响应流,但是如果我在同一个对象上再次调用它,则响应是空的。

代码语言:javascript
复制
// 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对象,它将把一个响应传递回回调方法。

代码语言:javascript
复制
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()返回响应时丢失响应中的数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-26 22:02:55

响应流直接从网络连接读取。

一旦你读到最后(在第2行),就没有更多的数据可读了。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17891736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档