2010-01-23 52 views
0

這是我的Webclient實現,據說這個下載應該是連續的,但由於某種原因,哪個調試甚至沒有幫助,我在第一次運行中獲得了1次成功,其餘都失敗了。有誰知道爲什麼?C#循環下載的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"); 
      } 

     } 

回答

1

當我搞砸了這個代碼,它的工作,大聲笑!我不知道」好說的了什麼?

   using (WebClient client = new WebClient()) 
       { 
        //manipulate request headers (optional) 
        client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 

        //execute request and read response as string to console 
        using (StreamReader reader = new StreamReader(client.OpenRead(url))) 
        { 
         string s = reader.ReadToEnd(); 
         //Console.WriteLine(s); 
         Console.WriteLine("Vote " + i.ToString() + ": SUCCESS"); 
         i++; 
        } 
       } 

       // *** Establish the request 
       HttpWebRequest loHttp = 
        (HttpWebRequest)WebRequest.Create(url); 

       // *** Set properties 
       loHttp.Timeout = 10000;  // 10 secs 
       loHttp.UserAgent = "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)"; 
       loHttp.Headers["Accept-Encoding"] = "gzip"; 
       // *** Retrieve request info headers 
       HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse(); 

       Encoding enc = Encoding.GetEncoding(1252); // Windows default Code Page 

       StreamReader loResponseStream = 
        new StreamReader(loWebResponse.GetResponseStream(), enc); 

       string lcHtml = loResponseStream.ReadToEnd(); 

       loWebResponse.Close(); 
       loResponseStream.Close(); 

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

標記爲社區維基,因此,如果任何人都知道爲什麼,請編輯... :(

0

使用像Fiddler這樣的調試代理,您將能夠看到HTTP事務。

+0

其發送張玉峯要求,我沒有看到任何東西問題,服務器響應內容長度爲0.但是,如果我使用Firefox,我可以刷新到該頁面出問題。這裏的WebClient的問題是什麼...... :( – DucDigital 2010-01-23 12:46:45