首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebRequest错误?

WebRequest错误?
EN

Stack Overflow用户
提问于 2010-08-20 21:29:05
回答 2查看 802关注 0票数 2

编辑:解决了,问题在服务器端。

我正在使用C#和.NET2,我想知道这是一个WebRequest错误。我用这个方法做了几个很好的请求,一切都很好,但之后每次我都会得到“操作已超时”。我真的不明白为什么会这样。

代码语言:javascript
复制
public string RequestPage(string url) {
        HttpWebRequest req = null;
        string line = "";
        string site = "";

        try {
            req = (HttpWebRequest) WebRequest.Create(url.Trim());
            req.Timeout = 10000;

            StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream());
            while ((line = reader.ReadLine()) != null) {
                site += line;
            }

            return site;
        } catch (Exception ex) {
            MessageBox.Show("ERROR " + ex.Message);
        }

        return null;
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-20 21:43:43

我不知道这是否解决了您的问题,但是当您完成时,您应该始终处理一个HttpWebResponse (和其他实现IDisposable的对象):

代码语言:javascript
复制
public string RequestPage(string url)
{
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
    req.Timeout = 10000;

    using (WebResponse resp = req.GetResponse())
    using (StreamReader reader = new StreamReader(resp.GetResponseStream()))
    {
        return reader.ReadToEnd();
    }
}

如果您实际上不需要HttpWebRequest的所有功能,则可以使用WebClient

代码语言:javascript
复制
public string RequestPage(string url)
{
    using (WebClient client = new WebClient())
    {
        return client.DownloadString(url);
    }
}
票数 2
EN

Stack Overflow用户

发布于 2010-08-20 21:43:22

您没有处理响应:

代码语言:javascript
复制
using (WebResponse response = req.GetResponse())
using (StreamReader reader = new StreamReader(response.GetResponseStream())
{
    while ((line = reader.ReadLine()) != null) {
        site += line;
    }
}

基本上,您与之交谈的每台服务器都有池化连接。因为没有关闭响应,所以它们快用完了。上面的内容应该会解决这个问题。

此外:

这是建立字符串的一种潜在的,非常慢的方式。,,

  • 。使用StringBuilder在循环中连接文本内容。
  • 是否确实要删除所有换行符?如果不是,请改用reader.ReadToEnd()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3531252

复制
相关文章

相似问题

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