1

我正在编写一个从一系列网页中读取数据的程序;这适用于第一页,但是它会在等待下一页的响应时挂起,直到超时。无论我是从阅读第 1、2、140 页等开始,它总是会成功阅读第一页,但之后就没有了。

我认为这可能与访问页面所需的“cookieHeader”变量有关,因为网站需要用户先登录。但是,当我检查这个元素时,它的过期时间设置为第二天,所以我还没有看到它是如何过期的。

我是新手,所以我希望以前遇到过这个问题或者对 cookie 有更好理解的人可以帮助我。我将不胜感激任何意见!下面是一段代码,其中超时错误被 try-catch 包装器捕获。

// loop through each page
for (int i = 1; i <= totalPages; i++)
{
    string thisUrl = chatUrl + i; //add page number to url
    WebRequest getReq = WebRequest.Create(thisUrl);
    getReq.Headers.Add("Cookie", cookieHeader);
    try
    {
        WebResponse getResp = getReq.GetResponse();
        Console.WriteLine("Page " + i + " read successfully");
    }
    catch (Exception e)
    {
        Console.WriteLine("Page " + i + " failed");
    }
}
4

1 回答 1

2

我认为这与没有正确关闭响应有关。如果我没记错的话,WebResponse 实现了 IDisposable。所以尝试使用 using 语句处理它。此外,.Net 的某些客户端版本有一些限制,默认情况下,您只能同时打开 2 个连接到同一服务器。如果您没有正确处理连接(WebResponse)(可能是因为保持活动设置),则此限制可能会生效。

于 2015-02-01T03:05:55.700 回答