首页 > 其他分享 >.net core上传https的post接口

.net core上传https的post接口

时间:2022-08-31 15:37:31浏览次数:81  
标签:core string httpClientFactory https var new net httpClient

如果采用之前的HttpWebRequest方法是实现https的请求,会报错无法建立SSL连接
换一种读取方式 参考地址

1 ,https://blog.csdn.net/shanghaibao123/article/details/124116749
2,https://www.bbsmax.com/A/amd00jxjdg/
3,https://www.cnblogs.com/bjxxlbm/articles/14644030.html

1 首先在NuGet中下载包

Microsoft.Extensions.Http

2 在启动类ConfigureServices中配置启用https

  //.net  core添加https 正式配置
            services.AddHttpClient(Options.DefaultName, c =>
            {
                // ...
            }).ConfigurePrimaryHttpMessageHandler(() =>
            {
                return new HttpClientHandler
                {
                    ClientCertificateOptions = ClientCertificateOption.Manual,
                    ServerCertificateCustomValidationCallback =
                        (httpRequestMessage, cert, certChain, policyErrors) => true
                };
            });

3 调用

先在构造函数中注入

      private readonly IHttpClientFactory _httpClientFactory;
        public TCQXXCLService( IHttpClientFactory httpClientFactory)
        {
            _httpClientFactory = httpClientFactory;
        }

调用

       /// <summary>
        /// 获取https  不传参数
        /// </summary>
        /// <param name="url"></param>
        /// <param name="json"></param>
        /// <returns></returns>
        public string GetApi(string url, string json)
        {
            try
            {
                var httpClient = _httpClientFactory.CreateClient();
                httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "text/plain");
                httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
   
                var httpResponseMessage = httpClient.GetAsync(url);

                //  var httpResponseMessage = httpClient.GetAsync(url);
                var content = httpResponseMessage.Result.ToString();
                return content;
            }
            catch (Exception ex)
            {

                throw;
            }

        }
        /// <summary>
        /// post传参数 json格式
        /// </summary>
        /// <param name="url"></param>
        /// <param name="requestJson"></param>
        /// <returns></returns>
        public string HttpClientPost(string url, string requestJson)
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            Uri postUrl = new Uri(url);
            var encodeBytes = Encoding.UTF8.GetBytes(requestJson);
            using (HttpContent httpContent = new ByteArrayContent(encodeBytes))
            {
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                var client1 = _httpClientFactory.CreateClient();
                client1.Timeout = new TimeSpan(0, 0, 60);
                var result = client1.PostAsync(postUrl, httpContent).Result.Content.ReadAsStringAsync().Result;
                return result;

            }
        }

标签:core,string,httpClientFactory,https,var,new,net,httpClient
From: https://www.cnblogs.com/yunnn/p/16643264.html

相关文章