栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

C#.NET客户端支持http2.0协议,并同时兼容https

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#.NET客户端支持http2.0协议,并同时兼容https

public static string RquestUrl(string method, string url, string bodyData, string token = "", string contentType = "application/json")
        {
            var handler = new Http2CustomHandler();
            string response = "";
            using (var httpClient = new HttpClient(handler))
            {
                try
                {
                    Task.Run(async () =>
                    {
                        HttpMethod httpMethod = new HttpMethod(method);
                        HttpRequestMessage requestMessage = new HttpRequestMessage(httpMethod, url) { Version = new Version("2.0") };
                        //实现https
                        if (url.Contains("Https"))
                        {
                            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
                        }
                        if (bodyData != "")
                        {
                            requestMessage.Content = new StringContent(bodyData);
                        }
                        if (token != "")
                        {
                            httpClient.DefaultRequestHeaders.Add("accessToken", token);
                        }
                        httpClient.DefaultRequestHeaders.Accept.Clear();
                        httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(contentType));
                        var httpResponse = httpClient.SendAsync(requestMessage, CancellationToken.None).Result;
                        response = await httpResponse.Content.ReadAsStringAsync();
                    }).Wait();
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                    return e.Message;
                }

            }
            return response;
        }

 

public class Http2CustomHandler : WinHttpHandler
    {
        protected override Task SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
        {
            request.Version = new Version("2.0");
            return base.SendAsync(request, cancellationToken);
        }
    }

 注:需要通过nuget添加WinHttpHandler包

以上内容参考自Stack Overflow:

c# - Make Https call using HttpClient - Stack Overflow

c# - How to make the .net HttpClient use http 2.0? - Stack Overflow

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991896.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号