1、通過socket頁面請求后的receive內容不能經過string后再進行解壓縮處理 會造成錯誤的gzip幻數報錯
推薦使用流處理
2、正確分析返回內容 分割header和頁面代碼部分
3、對頁面代碼部分進行解壓縮
4、重組header與解壓縮后的頁面代碼
解壓縮使用net2.0的GZipStream類 很方便
public static string DecompressGzip(Stream stm) { string strHTML = ""; GZipStream gzip = new GZipStream(stm, CompressionMode.Decompress);//解壓縮 using (StreamReader reader = new StreamReader(gzip, Encoding.GetEncoding("gb2312")))//中文編碼處理 { strHTML = reader.ReadToEnd(); } return strHTML; }
有些頁面請求需要加 Accept-Encoding: gzip, deflate