【问题标题】:Is there anyway to reset webclient?无论如何要重置网络客户端?
【发布时间】:2010-01-26 14:58:52
【问题描述】:

我在使用 webclient 解析一些非常敏感的网页时遇到问题。不知何故,webclient 无法完成某些任务,我什至不知道为什么,没有异常,没有错误,只是简单的不工作(这不是网站的问题)

我循环运行webclient,但是,只有第一个请求成功,接下来的所有请求都失败了。当我重新启动应用程序时,出现相同的结果,第一个请求总是成功,而所有其他请求都失败。

我确定所有的 webclient 都已正确处理,但我不知道问题出在哪里,webclient 是否在处理后仍然保存信息?

请指导我如何清除所有内容,重置所有内容并启动全新的网络客户端。

for (int i = 1; i <= Count; i++)
{
    using (WebClient wc = new WebClient())
    {
        wc.Headers["Accept-Encoding"] = "gzip";
        wc.Headers["User-Agent"] = "Mozilla/4.0 (Compatible; Windows NT 5.1; MSIE 6.0) (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
        byte[] arr = wc.DownloadData(url);

        if (arr.Length > 0)
            Console.WriteLine(i.ToString() + ": SUCCESS");
        else
            Console.WriteLine(i.ToString() + ": FAILED");
    }
}

【问题讨论】:

    标签: c# .net parsing webclient


    【解决方案1】:

    WebClient 不会在实例之间共享任何信息。
    你可能有不同的问题。

    例如,网站可能会忽略过于频繁发生的请求。

    您应该运行 Fiddler 并检查到底发生了什么。

    另外,尝试在循环中添加Thread.Sleep(5000),看看是否有任何变化。 (在提琴手中)

    【讨论】:

    • 是的,在我的程序中,我尝试了 fiddler 和 thread.sleep(5000),但没有帮助。该站点,在我的实际请求中,我可以毫无问题地请求它。另外,为什么只有第一个请求是可能的?我尝试运行第一个请求,关闭,再次运行,它工作得很好。
    • 运行 Fiddler 并查看服务器的响应。 (以及原始请求是否有任何差异。另外,尝试使用 Fiddler 的请求构建器发出两个请求。
    • 对于第一个答案,没有什么不同,但是服务器响应 Content-length 0。我尝试重新启动并再次运行,我可以接收数据,但接下来的都是 content-length:0,如果它实际上处理了所有东西,我想循环成功,对吧?但是我需要重新启动程序并再次运行,很麻烦。第二,请求生成器不适合这种情况,因为我需要在请求后续页面之前运行某个令牌的解析...
    • 那么你可能得到第二页的 URL 错误。
    • 同理,循环解析在同一个页面。我以前做过这个,但它在没有任何线索的情况下工作(我什至不知道它为什么工作)stackoverflow.com/questions/2123096/… |但是由于目标网站上有一些变化,我需要重写代码,因为我不知道我上次做了什么,现在,我需要了解为什么会发生这种情况.. :( 我一直在写,重写代码5 小时前。但没有运气
    猜你喜欢
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    相关资源
    最近更新 更多