2010-01-26 29 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