2010-01-26 26 views
2

我遇到了webclient解析一些非常敏感的网页的问题。不知何故,Web客户端没有做任何事情,我甚至不知道为什么,没有例外,没有错误,只是简单的不工作(这不是从网站的问题)无论如何重置webclient?

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

我确定所有的webclient都正确配置,但我不知道问题是什么,webclient即使在配置后也保存信息?

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

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"); 
    } 
} 

回答

0

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

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

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

此外,请尝试在循环中添加Thread.Sleep(5000)并查看是否有任何更改。 (在提琴手)

+0

是的,在我的程序中,我尝试了提琴手和thread.sleep(5000),它没有帮助。该网站,在我的实际请求中,我可以请求它没有任何问题。另外,为什么只有第一个要求才是可行的?我试图运行第一次请求,关闭,再次运行,它工作得很好。 – DucDigital 2010-01-26 15:10:40

+1

运行Fiddler并查看服务器的响应情况。 (以及是否在原始请求中有任何区别,并且尝试使用Fiddler的请求构建器发出两个请求。 – SLaks 2010-01-26 15:13:22

+0

第一个答案,没有什么不同,但服务器响应内容长度为0.我尝试重新启动并再次运行,可以接收数据,但接下来的内容长度为0,如果它实际上处理所有事情,我想循环成功,对吧?但我需要重新启动程序并再次运行,非常麻烦。2,请求生成器不好对于这种情况,因为我需要在请求后续页面之前运行某个令牌的解析... – DucDigital 2010-01-26 15:18:45