码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2018-01-03 00:43:40      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:odi   取数   automatic   解决方案   handle   markdown   ati   htm   写入   

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

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

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

-说干就干,打开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之前写完这个小工具。。。。

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

标签:odi   取数   automatic   解决方案   handle   markdown   ati   htm   写入   

原文地址:https://www.cnblogs.com/boxrice/p/8179741.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!