您的位置:首页 > 理论基础 > 计算机网络

C# 利用HttpWebRequest模拟登陆获取数据设置Accept-Encoding为gzip,deflate后返回的网页是乱码处理

2017-07-31 20:34 976 查看
原由:在解决模拟登陆抓取数据的时候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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐