1. 程式人生 > 實用技巧 >HttpWebResponse獲取DOM資料注意之ContentEncoding

HttpWebResponse獲取DOM資料注意之ContentEncoding

public string GetKaiJ(string type = "ssq")
        {
            /*1.通過WebBrowser控制元件&HttpWebRequest獲得網站資訊*/
            switch (type)
            {
                case "ssq":
                    req = (HttpWebRequest)HttpWebRequest.Create(url_ssq);
                    break;
                case
"dlt": req = (HttpWebRequest)HttpWebRequest.Create(url_dlt); break; default: req = (HttpWebRequest)HttpWebRequest.Create(url_ssq); break; } req.ContentType = "text/html"; req.Method
= "GET"; req.Timeout = 1000; /*2.資料處理*/ HttpWebResponse response = (HttpWebResponse)req.GetResponse(); /**在這裡對接收到的頁面內容進行處理 * 說明:HttpWebResponse.ContentEncoding會返回兩種情況:ContentEncoding="";ContentEncoding="gzip"; * gzip的情況需要解壓,就是第一種情況;注意gzip要小寫; * 如果不注意這兩種情況,網站返回的資料有時候會間隔以這兩種情況返回;造成有時候編碼正常,有時亂碼 * 對於這兩種情況要進行分別的資料解析
*/ if (response.ContentEncoding == "gzip") { //using (Stream resStream = response.GetResponseStream()) using (var resStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress)) { //using (StreamReader reader = new StreamReader(resStream,myEncoding)) using (var reader = new StreamReader(resStream, System.Text.Encoding.Default)) { responseContent = reader.ReadToEnd().ToString(); // Read and display lines from the file until the end of // the file is reached. //string line; //while ((line = reader.ReadLine()) != null) //{ // Console.WriteLine(line); //} } } } else if (response.ContentEncoding == "") { using (var resStream = response.GetResponseStream()) //using (Stream resStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress)) { //using (StreamReader reader = new StreamReader(resStream,myEncoding)) using (StreamReader reader = new StreamReader(resStream, myEncoding_default)) { responseContent = reader.ReadToEnd().ToString(); // Read and display lines from the file until the end of // the file is reached. //string line; //while ((line = reader.ReadLine()) != null) //{ // Console.WriteLine(line); //} } } } else { } return $"{responseContent}\nresponseContentEncoding:{response.ContentEncoding}"; }