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();
经过检查最终应该是编码是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();
相关文章推荐
- python---get/post请求下载指定URL返回的网页内容,出现gzip乱码处理。设置Accept-Encoding为gzip,deflate,返回的网页是乱码
- 设置Accept-Encoding为gzip,deflate,返回的网页是乱码
- 利用HttpWebRequest获取网页内容,由于Gzip压缩导致乱码的情况
- httpclient访问网站时设置Accept-Encoding为gzip,deflate返回的结果为乱码的问题
- C#利用HttpWebRequest,Stream,HttpWebResponse,StreamReader获取post返回的数据
- 利用HttpWebRequest来实现提交和获取网页数据
- [置顶] Android Accept-Encoding为gzip,deflate Http请求返回的结果为乱码
- C# : WebRequest发起Http Post请求模拟登陆并cookie处理示例
- c#第一篇 在WPF的window窗体中使用httpwebrequest实现模拟登陆网页,并在webbroser控件中显示
- httpclient访问网站时设置Accept-Encoding为gzip,deflate返回的结果为乱码的问题
- C#如何HttpWebRequest模拟登陆,获取服务端返回Cookie以便登录请求后使用
- 【转】C# WebRequest发起Http Post请求模拟登陆并cookie处理示例
- HttpWebRequest获取网页html源代码(并自动获取encoding)
- C# 模拟表单 post数据 文件 和 文本 HttpWebRequest
- c# 使用 HttpWebRequest模拟登陆(附带验证码)
- [转]c#利用WebClient和WebRequest获取网页源代码的比较
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
- 黄聪:C#模拟网站页面POST数据提交表单(二)--HttpWebRequest以及HttpWebResponse (转)
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
- 用 c# 使用HttpWebRequest模拟登陆(带验证码)