using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
namespace Simple1
{
public class MyHttpClienHanlder : HttpClientHandler
{
NameValueHeaderValue NameValueHeaderValue = new NameValueHeaderValue("");
public MyHttpClienHanlder(HttpHeaders headers)
{
}
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
request.Headers.Add("UserAgent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727)");
var rsponse = await base.SendAsync(request, cancellationToken);
var contentType = rsponse.Content.Headers.ContentType;
contentType.CharSet = await getCharSetAsync(rsponse.Content);
return rsponse;
}
private async Task<string> getCharSetAsync(HttpContent httpContent)
{
var charset = httpContent.Headers.ContentType.CharSet;
if (!string.IsNullOrEmpty(charset))
return charset;
var content = await httpContent.ReadAsStringAsync();
var match = Regex.Match(content, @"charset=(?<charset>.+?)""", RegexOptions.IgnoreCase);
string charsetValue = null;
if (!match.Success)
{
charsetValue = match.Groups["charset"].Value;
if (charset=="gb2312")
{
charset = "gbk";
}
}
return charsetValue;
}
}
}
MyHttpClienHanlder示例
最新推荐文章于 2021-03-08 18:33:37 发布