2011-07-12 50 views
0

我有這個爲前: LinkC#/爲什麼Get html會返回隨機垃圾字符?

此代碼:

const String nick = "Alex"; 
const String log = "http://demonscity.combats.com/zayavka.pl?logs="; 
foreach (DateTime cd in dateRange) 
{ 
string str = log + String.Format("{0:MM_dd_yy}", cd.Date) + "&filter=" + nick; 
String htmlCode = wc.DownloadString(str); 
} 

回報的東西......「<\ B \ 0 \ 0 \ 0 \ 0 \ 0 \0я•XYsЫЦ〜зЇёѕ ™d)bг.тBҐ$ЪRЖ '<2УN&с[email protected]р'「\˚F\ 0J --_Фџђ§¤нt|г6ќѕУЄђ0'IQtТґcμо№X(jі-Щ/Ђі|?g`yҐ¶ц」

其他鏈接正常工作 我認爲問題出在Codepage上,我該如何解決它?或者它是服務器問題?

回答

7

問題是響應是GZip壓縮的(響應有一個Content-Encoding: gzip標題)。你需要先解壓,然後你就可以讀取它:

public class StackOverflow_6660689 
{ 
    public static void Test() 
    { 
     WebClient wc = new WebClient(); 
     Encoding encoding = Encoding.GetEncoding("windows-1251"); 
     byte[] data = wc.DownloadData("http://demonscity.combats.com/zayavka.pl?logs=08_07_11&filter=Alex"); 
     GZipStream gzip = new GZipStream(new MemoryStream(data), CompressionMode.Decompress); 
     MemoryStream decompressed = new MemoryStream(); 
     gzip.CopyTo(decompressed); 
     string str = encoding.GetString(decompressed.GetBuffer(), 0, (int)decompressed.Length); 
     Console.WriteLine(str); 
    } 
} 
+0

太好了,謝謝!我如何找到內容編碼? – kfhh

0

我認爲這是它不應該,除非客戶明確接受的格式gzip格式返回結果。

+0

謝謝!你是對的 – kfhh