zoukankan      html  css  js  c++  java
  • HttpWebResponse获取DOM数据注意之ContentEncoding

    public string GetKaiJ(string type = "ssq")
            {
                /*1.通过WebBrowser控件&HttpWebRequest获得网站信息*/
                switch (type)
                {
                    case "ssq":
                        req = (HttpWebRequest)HttpWebRequest.Create(url_ssq);
                        break;
                    case "dlt":
                        req = (HttpWebRequest)HttpWebRequest.Create(url_dlt);
                        break;
                    default:
                        req = (HttpWebRequest)HttpWebRequest.Create(url_ssq);
                        break;
                   }
    
                req.ContentType = "text/html";
                req.Method = "GET";
                req.Timeout = 1000;
                /*2.数据处理*/   
                HttpWebResponse response = (HttpWebResponse)req.GetResponse();
    
                /**在这里对接收到的页面内容进行处理
                 * 说明:HttpWebResponse.ContentEncoding会返回两种情况:ContentEncoding="";ContentEncoding="gzip";
                 * gzip的情况需要解压,就是第一种情况;注意gzip要小写;
                 * 如果不注意这两种情况,网站返回的数据有时候会间隔以这两种情况返回;造成有时候编码正常,有时乱码
                 * 对于这两种情况要进行分别的数据解析
                 */
                if (response.ContentEncoding == "gzip") {
                    //using (Stream resStream = response.GetResponseStream())
                    using (var resStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress))
                    {
                        //using (StreamReader reader = new StreamReader(resStream,myEncoding))
                        using (var reader = new StreamReader(resStream, System.Text.Encoding.Default))
                        {
                            responseContent = reader.ReadToEnd().ToString();
    
                            // Read and display lines from the file until the end of
                            // the file is reached.
                            //string line;
                            //while ((line = reader.ReadLine()) != null)
                            //{
                            //    Console.WriteLine(line);
                            //}
                        }
                    }
                } else if (response.ContentEncoding == "") {
                    using (var resStream = response.GetResponseStream())
                    //using (Stream resStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress))
                    {
                        //using (StreamReader reader = new StreamReader(resStream,myEncoding))
                        using (StreamReader reader = new StreamReader(resStream, myEncoding_default))
                        {
                            responseContent = reader.ReadToEnd().ToString();
    
                            // Read and display lines from the file until the end of
                            // the file is reached.
                            //string line;
                            //while ((line = reader.ReadLine()) != null)
                            //{
                            //    Console.WriteLine(line);
                            //}
                        }
                    }
                } else { }
                return $"{responseContent}
    responseContentEncoding:{response.ContentEncoding}"; 
            }
  • 相关阅读:
    wgcloud问题处理——被监控的客户机掉线
    WGCLOUD下发指令时候如何屏蔽linux敏感字符
    WGCLOUD左侧菜单如何保持展开状态
    zerotier 实现 minecraft 局域网联机 | 我的世界联机教程 | minecraft联机
    [ UVa 12096 详解] The Set Stack Computer 集合栈计算机 | map、set、vector、stack、宏函数等知识点简单应用
    [ Uva 101 详解 ] the block problem 木块问题
    Python操作数据库基本操作-sqlalchemy
    统计目录下程序源程序的行数之和-Python
    凯撒密码C++实现
    【题解】[AGC036F] Square Constraints
  • 原文地址:https://www.cnblogs.com/nick-jd/p/13559720.html
Copyright © 2011-2022 走看看