HttpClient读取数据乱码的解决方案

简介: HttpClient读取数据乱码的解决方案

博主是一个近十年的老书虫了,从高中那会儿就开始看网络小说。每天半天看晚上看啊,终于眼睛也近视了,成绩也下降了(。。。。好像说远了)

最近在追辰东的《圣墟》,最近写到精彩部分了,一直等更新。但是也不能一直开着浏览器刷新啊。。。。

于是乎,就发挥了咱们程序员自给自足的精神,写一个程序去监听,然后等又更新的时候,自动打开浏览器,然后就可以愉快的看书了。。

-说干就干,打开VS2017,新建一个。。。。。。随便啥项目,然后写入

HttpClient httpClient = new HttpClient();
var message = await httpClient.GetAsync(a);
var html = await message.Content.ReadAsStringAsync();

-然后习惯性的Debug看一下html的值。。。。我的天。。。。

这啥玩意儿???

-然后我以为是编码问题,于是乎我又加上编码

var contentType = message.Content.Headers.ContentType;
if (string.IsNullOrEmpty(contentType.CharSet))
{
        contentType.CharSet = "utf-8";
}

-然后结果还是一样啊。。。。。我的天,难道这破网站有啥反爬虫机制???

-于是我又分析浏览器的请求,把请求头给加上

httpClient.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
httpClient.DefaultRequestHeaders.Referrer = new Uri("http://m.gxwztv.com/");
httpClient.DefaultRequestHeaders.Add("Cookie", "cids_AC=92542; cids_AC3=12743; cids_NU=12533; ras=41901%2C2121%2C12743%2C92542; cids_AC1=2121%2C41901; cv=5; fs=16; which=2");
httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1");
httpClient.DefaultRequestHeaders.Add("Accept-Language", "zh-CN,zh;q=0.8,en;q=0.6");
httpClient.DefaultRequestHeaders.Add("Connection", "keep-alive");
httpClient.DefaultRequestHeaders.Add("DNT", "1");
httpClient.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate, sdch");

这下终于对了把???然后F5运行。。。我的天,还是不对。。。。

-然后我又瞎找了十来分钟原因,最后瞟到上面那行代码。。。。对!没错,就是那个Gzip。。。。我想会不会是要解压啊。。。web程序员的我,平时这些都是浏览器帮我搞定了啊,我哪儿知道这些啊。

-于是又翻开万能的MSDN。。。找httclient解压Gzip的api。。。。

var handler = new HttpClientHandler()
{
       AutomaticDecompression = DecompressionMethods.GZip
};
HttpClient httpClient = new HttpClient(handler);

然后就这样,然后再次F5.。。。。这下终于对了。。。。

继续写吧,争取再23.30之前写完这个小工具。。。。

目录
相关文章
|
9月前
|
C#
C#之四十二 C# 读写文本文件乱码解决方案
C#之四十二 C# 读写文本文件乱码解决方案
239 0
jmeter响应结果乱码处理和基本使用
jmeter响应结果乱码处理和基本使用
|
JSON 缓存 前端开发
【并发技术系列】「Web请求读取系列」如何构建一个可重复读取的Request的流机制
【并发技术系列】「Web请求读取系列」如何构建一个可重复读取的Request的流机制
218 0
【并发技术系列】「Web请求读取系列」如何构建一个可重复读取的Request的流机制
|
Web App开发 Java
Javaweb 响应字节流输出中文乱码问题
Javaweb 响应字节流输出中文乱码问题
329 0
Javaweb 响应字节流输出中文乱码问题
|
JSON 前端开发 Java
SpringMVC:请求乱码问题处理和json乱码解决方案
SpringMVC:请求乱码问题处理和json乱码解决方案
SpringMVC:请求乱码问题处理和json乱码解决方案
Jmeter中发出请求后的接收的response data乱码
Jmeter中发出请求后的接收的response data乱码
136 0
Jmeter中发出请求后的接收的response data乱码
|
JSON 前端开发 JavaScript
SpringMVC教程5[数据回写和异常处理及JSON操作]
一、数据回写 数据回写:在做数据更新的时候服务端查询的数据自动填充到表单中。
SpringMVC教程5[数据回写和异常处理及JSON操作]
|
XML JSON 前端开发
浏览器、服务端、同步异步、XML和JSON
本文目录 1. 浏览器 2. 服务端 3. 同步和异步 4. XML和JSON
160 0
|
存储 JSON JavaScript
springmvc的参数接收不能兼容以及HttpServletRequest中的流多次使用
springmvc的参数接收不能兼容以及HttpServletRequest中的流多次使用
253 0