public class ForceHttp2Handler : DelegatingHandler
{
public ForceHttp2Handler(HttpMessageHandler innerHandler)
: base(innerHandler)
{
}
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
request.Version = new Version(2, 0);
return base.SendAsync(request, cancellationToken);
}
}
public string HTTPGet(string url)
{
using (var client = new HttpClient(new ForceHttp2Handler(new WinHttpHandler())))
{
var message = new HttpRequestMessage(HttpMethod.Get, url);
var html = "";
var response = client.SendAsync(message).Result;
if (response.IsSuccessStatusCode)
{
html = response.Content.ReadAsStringAsync().Result;
}
return html;
}
}
public string HTTPPost(string url,string data)
{
using (var client = new HttpClient(new ForceHttp2Handler(new WinHttpHandler())))
{
var message = new HttpRequestMessage(HttpMethod.Post, url);
message.Content = new StringContent(data, Encoding.UTF8, "application/json");
var html = "";
var response = client.SendAsync(message).Result;
if (response.IsSuccessStatusCode)
{
html = response.Content.ReadAsStringAsync().Result;
}
return html;
}
}
.NET Core直接配置请求的版本即可,以上代码为.net framework4.5及以上使用,根据实际需要对以上代码修改即可。