原由:在解决模拟登陆抓取数据的时候post一个地址时老是获取的内容是乱码。
经过检查最终应该是编码是HttpWebRequest.Headers.Add("Accept-Encoding", "gzip,deflate"); 导致的,其中此行代码完全按照抓包工具分析数据后对应抓包工具分析的信息,就设置了对应的Accept-Encoding为gzip,deflate了。这样的代码,获得的网页源代码是乱码的,确切来说,是经过了GZip压缩的字符串,因此必须要进一步处理,把这些乱码还原成可读的html代码。
gzip是一种数据格式
默认且目前仅使用deflate算法压缩data部分,此法用于压缩传输
解决方法可以参考如下方法:
1:设置 HttpWebRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; ;
2:屏蔽HttpWebRequest.Headers.Add("Accept-Encoding", "gzip,deflate");
3: Stream getStream = new System.IO.Compression.GZipStream(webResponse.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
StreamReader streamReader = new StreamReader(getStream, Encoding.UTF8);
var getString= streamReader.ReadToEnd();