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}\nresponseContentEncoding:{response.ContentEncoding}";
}
HttpWebResponse获取DOM数据注意之ContentEncoding的更多相关文章
- Vue获取dom和数据监听
Vue获取dom对象 在js和jq中我们都能获取dom对象例如 // 获取id=1的div标签 <div id=d1>dom对象</div> // js语法 let ele = ...
- 从后台获取的数据渲染到页面中的dom操作
很多情况下页面dom都是从后台拼接字符串添加生成的新的dom元素,在编辑器中不能看到,只能通过检查看到页面的dom结构,但是这时候会发生一个问题,就是如果使用jQuery无法进行dom操作,事件和方法 ...
- vue的数据双向绑定和ref获取dom节点
vue是一个MVVM的框架 业务逻辑代码即js部分是model部分, html是view部分. 当model改变的时候,view也会改变 view 改变是,model也会改变 <template ...
- React 点击删除列表中对应项(React 获取DOM中自定义属性)
点击删除按钮,删除列表中对应项本来是React比较基础的应用,可是应用情况变得复杂了以后,我还真想了一会儿才搞定. 简化一下应用场景:点击新增按钮,增加一条输入框,点击输入框旁边的按钮,删除该输入框( ...
- javascript跨域获取json数据
项目在开发过程中,用到了天气预报的功能,所以需要调用天气预报的api,一开始以为直接用ajax调用url就可以获取天气数据,结果涉及到了跨域的问题,这里做一个记录. 说到跨域,就得知道同源策略. 同源 ...
- Ajax异步获取html数据中包含js方法无效的解决方法
页面上使用js写了一个获取后台数据的方法 function data() { var tab = $("#dic") $.ajax({ url: '../demo.ashx?met ...
- Vue自定义指令获取DOM元素
我们知道,Vue.js的核心是数据驱动,当数据有所变化时,DOM就会被更新,比如: <span v-text="msg"></span> export de ...
- vue(4)—— vue的过滤器,监听属性,生命周期函数,获取DOM元素
过滤器 vue允许自定义过滤器,我个人认为,过滤器有两种,一种是对数据的清洗过滤,一种是对数据切换的动画过滤 数据切换的动画过滤 这里还是利用前面的动态组件的例子: 这里由于没办法展示动画效果,代码如 ...
- Vue系列之 => ref获取DOM元素和组件
可以获取DOM元素,和组件中的数据,方法 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- Vue 双向数据绑定、事件介绍以及ref获取dom节点
vue是一个MVVM的框架 M model V view MVVM model改变会影响视图view,view改变会影响model 双向数据绑定必须在表单里面使用 //我发现在谷歌浏览器翻译后的网页 ...
随机推荐
- 【HTML】TinyMCE 编辑器
HTML编辑器 一.页面效果 二.引入JS.CSS <!DOCTYPE html> <html lang="en"> <head> <me ...
- 河南省第十四届icpc大学生程序设计竞赛-clk
这次比赛赛程比较长,520出发,521,回学校,出发的那一天有点热,感觉不是很好,而且那一天感觉有点生病,应该只是普通感冒,热身赛的时候被oier吊打,省实验真厉害,晚上回酒店后,我喊队友,补了前年的 ...
- mysql的初体验——重装解决99%的问题
这两天被java_web的作业搞得头皮发麻,主要原因就是因为jdbc连接数据库一直失败,甚至差点把电脑搞崩,删个注册表,结果用户变量也被删了,心态直接炸裂.有以下几个地方,引以为戒: 1.配置环境最好 ...
- 记一次 zabbix item became not supported 问题处理
现象 配置了一个自定义监控项,超过 5m nodata 就会告警,最近触发了两次.通过日志查看,有一对相隔10分钟的告警: 时间t0: item xxx became not support: Tim ...
- zabbix 使用监控项原型(自动发现规则)
以kafka为例,需要先对 topic-parttion 做发现,脚本如下 cat topic_parttion_discovery.py #!/usr/bin/env python import j ...
- 列式分布式数据库ClickHouse部署
简介 Clickhouse是俄罗斯yandex公司2016年开源的用于OLAP的列式数据库. 使用C++语言编写,支持SQL实时查询. OLTP,更强调数据的完整性,行式存储: OLAP,更强调数据处 ...
- html中的一些常用标签与标签属性
label for属性 定义和用法 for 属性规定 label 与哪个表单元素绑定. <span> <label for="username">用户账号& ...
- Redhat 8.2 系统语言切换(英文转中文)
前提条件 确保已连上网,并且配好 yum 源 若未配好 yum 源 可参考我上一篇文章 部分 Linux 换国内源 操作步骤 安装中文语言包 dnf install glibc-langpack-zh ...
- 玄 - 利用DLL通知回调函数注入shellcode(上)
序 偶然看到某国外大佬发布新技术-"Threadless"进程注入技术,据说可过EDR(确实可),总结该技术原理 - 在远程目标进程中利用DLL通知回调机制执行shellcode, ...
- Codeforces Round #576 (Div. 2)
A - City Day 题意:给n,x,y和数组a[n],求最小的下标d,使得有a[d-x,d-x+1,--d-1,d+1,d-1,d+1,--d+y-1,d+y]都比a[d]小,若d-x<= ...