httpwebrequest模拟登陆 显示乱码

来源:互联网 发布:少儿 编程 编辑:程序博客网 时间:2024/04/29 08:16

[原因]
在使用httpwebrequest模拟登陆实现时,通过抓取网络数据包,设置http header,”Accept-Encoding” = “gzip,deflate” ,发现在服务端返回的网页显示乱码!开始以为是编码问题,再查找和调试以后发现编码设置都没有问题。so google!
[原来如此]
普通浏览器访问网页,之所以添加:”Accept-Encoding” = “gzip,deflate”
那是因为,浏览器对于从服务器中返回的对应的gzip压缩的网页,会自动解压缩,所以,其request的时候,添加对应的头,表明自己接受压缩后的数据。
而此代码中,如果也添加此头信息,结果就是,返回的压缩后的数据,没有解码,而将压缩后的数据当做普通的html文本来处理,当前显示出来的内容,是乱码了。
[解决办法]
知道问题出在哪之后,就很容易解决了,两种方式:
1.不要设置Accept-Encoding的Header
//req.Headers.Add(“Accept-Encoding”, “gzip,deflate”);
2.设置Accept-Encoding的Header,同时设置对应的自动解压缩的模式
req.Headers[“Accept-Encoding”] = “gzip,deflate”;
req.AutomaticDecompression = DecompressionMethods.GZip;
具体采用哪种方法,自己根据需要选择。

0 0
原创粉丝点击