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}\nresponseContentEncoding:{response.ContentEncoding}";
}

HttpWebResponse获取DOM数据注意之ContentEncoding的更多相关文章

  1. Vue获取dom和数据监听

    Vue获取dom对象 在js和jq中我们都能获取dom对象例如 // 获取id=1的div标签 <div id=d1>dom对象</div> // js语法 let ele = ...

  2. 从后台获取的数据渲染到页面中的dom操作

    很多情况下页面dom都是从后台拼接字符串添加生成的新的dom元素,在编辑器中不能看到,只能通过检查看到页面的dom结构,但是这时候会发生一个问题,就是如果使用jQuery无法进行dom操作,事件和方法 ...

  3. vue的数据双向绑定和ref获取dom节点

    vue是一个MVVM的框架 业务逻辑代码即js部分是model部分, html是view部分. 当model改变的时候,view也会改变 view 改变是,model也会改变 <template ...

  4. React 点击删除列表中对应项(React 获取DOM中自定义属性)

    点击删除按钮,删除列表中对应项本来是React比较基础的应用,可是应用情况变得复杂了以后,我还真想了一会儿才搞定. 简化一下应用场景:点击新增按钮,增加一条输入框,点击输入框旁边的按钮,删除该输入框( ...

  5. javascript跨域获取json数据

    项目在开发过程中,用到了天气预报的功能,所以需要调用天气预报的api,一开始以为直接用ajax调用url就可以获取天气数据,结果涉及到了跨域的问题,这里做一个记录. 说到跨域,就得知道同源策略. 同源 ...

  6. Ajax异步获取html数据中包含js方法无效的解决方法

    页面上使用js写了一个获取后台数据的方法 function data() { var tab = $("#dic") $.ajax({ url: '../demo.ashx?met ...

  7. Vue自定义指令获取DOM元素

    我们知道,Vue.js的核心是数据驱动,当数据有所变化时,DOM就会被更新,比如: <span v-text="msg"></span> export de ...

  8. vue(4)—— vue的过滤器,监听属性,生命周期函数,获取DOM元素

    过滤器 vue允许自定义过滤器,我个人认为,过滤器有两种,一种是对数据的清洗过滤,一种是对数据切换的动画过滤 数据切换的动画过滤 这里还是利用前面的动态组件的例子: 这里由于没办法展示动画效果,代码如 ...

  9. Vue系列之 => ref获取DOM元素和组件

    可以获取DOM元素,和组件中的数据,方法 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  10. Vue 双向数据绑定、事件介绍以及ref获取dom节点

    vue是一个MVVM的框架 M model V view MVVM  model改变会影响视图view,view改变会影响model 双向数据绑定必须在表单里面使用 //我发现在谷歌浏览器翻译后的网页 ...

随机推荐

  1. CF546E Soldier and Traveling 题解

    CF546E Soldier and Traveling 英文原题: 当然Luogu有中文翻译 对于这种类型的题目,又是增加,又是减少的,我们可以使用网络流进行转化. 说句废话: 网络流这个东西,趣味 ...

  2. 给程序员准备的“蜜糍”--SOD框架简介

    注:本文是SOD框架源码仓库的首页介绍,原文地址 一.框架介绍 1,SOD框架是什么? 以前有一个著名的国产化妆品"大宝SOD密",SOD框架虽然跟它没有什么关系,但是名字的确受到 ...

  3. Mysql基础6-常用数据库函数

    一.字符串函数 1.常见Mysql内置字符串函数 concat(s1,s2,s3,...):字符串拼接,将s1,s2,s3...等拼接成一个字符串 lower(str):将字符串str全部转为小写 u ...

  4. 2023年郑州轻工业大学校赛邀请赛zxy

    第一次组队和大家去外校打比赛,真的是一次很棒的体验,尽管结果不尽人意,但总之收获颇丰,也认识到自身更多的不足. 本次比赛是三人一队,一台电脑,一分纸质试题,我们三人开始先从第一题开始,这题看起来还行, ...

  5. Centos静默安装Oracle11G

    环境准备 Oracle 11gR2 64位 Linux版安装包 linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip ...

  6. Oracle快速拷贝数据

    游标拷贝数据 根据条件进行数据拷贝 -- 游标方式拷贝数据 DECLARE CURSOR cur IS SELECT * FROM JACKPOT WHERE TO_CHAR(JACKPOT.CREA ...

  7. 2021-7-9 VUE的number\trim\lazy

    Vue的v-model.number顾名思义,即是将绑定的参数中的字符串强制转换为int类型 而v-model.trim是将参数的前后空格删除 v-model.lazy:v-model的绑定是实时响应 ...

  8. IIS 应用程序池 PowerShell 脚本更改高级属性的方法

    ## IIS WebAdmin Module Import-Module WebAdministration $AppPool = "mqttService(8011)" $Sit ...

  9. html5 3.0 表单

    表单的定义:多个输入框,以表格的形式展示 表单常用在网页登录和注册功能中 表单的元素属性:<input type="text"name="   "valu ...

  10. Nessus 10.5.3 漏洞扫描器的下载安装与卸载

    测试环境 Kali 2023.2 本教程使用脚本进行自动化安装.破解 文章地址:https://www.iculture.cc/software/pig=25546#wznav_7 偶然发现,特别好用 ...