2015-06-02 108 views
0

我用c#中的webclient來獲取html結果,但它是不正確的。在c#中的webclient沒有得到正確的結果html

這是我的代碼片段。

WebClient client = new WebClient(); 
string htmlCode = client.DownloadString("https://kat.cr/"); 
MessageBox.Show(htmlCode); 

而結果不是在HTML頁面上看到的。

@如¢òÚ'_I6vâμ<ÉÌÉM¥「8|H-•=ûáVÝ_zÉíI= LO &dFÊNmjÆ'H 4ÝFãÅŸ>ìŸÿzzHÆÉÄ{OE〜«‰CC/A $ŸμZÓé '9Õ> A4j©Ýn·u ...eÄq£ - /‰X <3çÕ#ÿ^LxÂÖ¤ü½½½|ÙØü「û=Ÿ...Íìì×ËF''BzNì1

A7C「 $nâñWïzç「'w?}ÁöyE€7〜ÑÊÞf%=׿^6bì¢xÌ9Ðœ@ G-õG|ø²Ñj」%®Ý'I

我應該怎麼做,這樣我可以檢索實際的頁面?

+0

也許是因爲服務器返回了text/plain?誰知道。你試過小提琴手嗎? – erikkallen

+0

看起來像[*編碼*](http://www.sitepoint.com/do-you-know-your-character-encodings/)問題。 –

+0

@erikkallen:我會嘗試提琴手,將更新結果 –

回答

1

html代碼被壓縮..設置AutomaticDecompression爲GZip。 剛剛嘗試這個代碼,它會工作(與YOUE網頁進行了測試)

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress); 
     request.AutomaticDecompression = DecompressionMethods.GZip; 
     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

     if (response.StatusCode == HttpStatusCode.OK) 
     { 
      Stream receiveStream = response.GetResponseStream(); 
      StreamReader readStream = null; 

      if (response.CharacterSet == null) 
       readStream = new StreamReader(receiveStream); 
      else 
       readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet)); 
      string data = readStream.ReadToEnd(); 
      response.Close(); 
      readStream.Close(); 
     } 

既然你問了一個「Web客戶端」解決方案(見註釋):
因爲WebClient的實現是不減壓,你將不得不製作你自己的DecompressedWebClient。從WebClient類繼承很容易:

public class AutomaticDecompressionWebClient : WebClient 
{ 
    protected override WebRequest GetWebRequest(Uri address) 
    { 
     var request = base.GetWebRequest(address) as HttpWebRequest; 
     if (request == null) throw new InvalidOperationException("You can not use this WebClient implementation with an address that is not an http uri."); 
     request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; 
     return request; 
    } 
} 
+0

更新我的帖子與自定義WebClient –

+0

耶非常感謝你,這個代碼運行像一個魅力 –

+0

很高興它的工作..不要忘記標記帖子作爲答案,以便其他人會發現該解決方案以及 –

相關問題