首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StreamReader问题

StreamReader问题
EN

Stack Overflow用户
提问于 2011-07-04 15:19:33
回答 3查看 410关注 0票数 1

我之前试图破坏我新创建的servlet,结果破坏了我自己的应用程序,我有点希望我现在没有烦恼!

代码语言:javascript
复制
response = (HttpWebResponse)request.GetResponse();
reader = new StreamReader(response.GetResponseStream());
String streamedXML = reader.ReadToEnd(); // 
XmlDocument doc = new XmlDocument();
doc.LoadXml(streamedXML);

如果我打开大约10个窗口,然后从servlet中快速请求数据(这是相同的10个窗口,返回相同的数据),那么我就会抛出一个xml异常;

代码语言:javascript
复制
Unexpected end of file has occurred. The following elements are not closed:

问题是,如果我一次运行这一次,或者请求之间有很大的差距,那么如果完成的很好。这是因为我的流读取器被请求过多地添加到中,并在其他请求完成之前启动新的请求?如果是的话,是否有更好的方法来编写这些数据?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-07-04 15:22:45

您可以尝试修复此代码,或者将其留给专家使用WebClient:

代码语言:javascript
复制
using (var client = new WebClient())
{
     string streamedXML = client.DownloadString(sourceUrl);
     ...

}

就我个人而言,我会使用XDocument而不是XmlDocument,但这要看情况而定。

票数 4
EN

Stack Overflow用户

发布于 2011-07-04 15:21:52

StreamReader并没有不知所措。(它只能阻止或引发IO异常/内存不足异常)

然而,它与之交谈的服务器似乎不堪重负。

使用费德勒或在服务器日志中查找

票数 2
EN

Stack Overflow用户

发布于 2011-07-04 15:24:03

首先,您可以正确地处理所有内容,看看这是否有帮助:

代码语言:javascript
复制
using(response = (HttpWebResponse)request.GetResponse())
using(reader = new StreamReader(response.GetResponseStream()))
{
    String streamedXML = reader.ReadToEnd(); // 
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(streamedXML);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6573328

复制
相关文章

相似问题

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