HttpClient是.net core 下使用比较频繁的http客户端了,其又有官方支持的HttpClientFactory,可谓强大之际。为了获取特定网站的网页,可以建立一个连接池供使用,效率很高。
这里以百度为例,并支持自动解压缩。
var sc = new ServiceCollection()
.AddHttpClient("baidu", c =>
{
c.BaseAddress = new Uri("https://baijiahao.baidu.com/");
c.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3");
c.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36");
})
.ConfigurePrimaryHttpMessageHandler(messageHandler =>
{
var handler = new HttpClientHandler();
if (handler.SupportsAutomaticDecompression)
{
handler.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
}
return handler;
}).AddTransientHttpErrorPolicy(p =>
p.WaitAndRetryAsync(3, _ => TimeSpan.FromMilliseconds(600)));