最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解.NET Core 使用HttpClient SSL請(qǐng)求出錯(cuò)的解決辦法

 更新時(shí)間:2019年03月06日 11:36:24   作者:myzony  
這篇文章主要介紹了.NET Core 使用HttpClient SSL請(qǐng)求出錯(cuò)的解決辦法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

問(wèn)題

使用 HTTP Client 請(qǐng)求 HTTPS 的 API 時(shí)出現(xiàn) The certificate cannot be verified up to a trusted certification authority 異常,并且證書(shū)已經(jīng)傳入。

下面就是問(wèn)題代碼:

public class Program
{
 public static void Main(string[] args)
 {
  var url = @"https://xxx.xxx.xxx.xxx:xxxx/xxx-web/services/xxxx?wsdl";

  var handler = new HttpClientHandler
  {
   ClientCertificateOptions = ClientCertificateOption.Manual,
   ClientCertificates =
   {
    new X509Certificate2(@"E:\cert\rootTrust.cer","11111111"),
    new X509Certificate2(@"E:\cert\middleTrust.cer","11111111"),
    new X509Certificate2(@"E:\cert\wskey.pfx","ws654321")
   }
  };
  
  var webRequest = new HttpClient(handler);
  var result = webRequest.GetStringAsync(url).GetAwaiter().GetResult();
  Console.WriteLine(result);
 }
}

原因

因?yàn)樵诎l(fā)出 HTTPS 請(qǐng)求的時(shí)候,HttpClient 都會(huì)檢查 SSL 證書(shū)是否合法。如果不合法的話,就會(huì)導(dǎo)致拋出異常信息,而對(duì)方給出的證書(shū)是自簽發(fā)的測(cè)試接口的證書(shū),所以不是一個(gè)合法的 SSL 證書(shū)。

解決

HttpClientHandler 當(dāng)中會(huì)有一個(gè) ServerCertificateCustomValidationCallback 事件,該事件用于判定證書(shū)驗(yàn)證是否通過(guò)。我們可以掛接該事件,然后邏輯編寫(xiě)為直接返回 true 結(jié)果,這樣就會(huì)忽略掉證書(shū)異常的情況。

最新的代碼如下:

public class Program
{
 public static void Main(string[] args)
 {
  var url = @"https://xxx.xxx.xxx.xxx:xxxx/xxx-web/services/xxxx?wsdl";

  var handler = new HttpClientHandler
  {
   ServerCertificateCustomValidationCallback = (message, certificate2, arg3, arg4) => true, 
   ClientCertificateOptions = ClientCertificateOption.Manual,
   ClientCertificates =
   {
    new X509Certificate2(@"E:\cert\rootTrust.cer","11111111"),
    new X509Certificate2(@"E:\cert\middleTrust.cer","11111111"),
    new X509Certificate2(@"E:\cert\wskey.pfx","ws654321")
   }
  };
  
  var webRequest = new HttpClient(handler);
  var result = webRequest.GetStringAsync(url).GetAwaiter().GetResult();
  Console.WriteLine("xx");
 }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

邓州市| 安丘市| 镇雄县| 和平县| 区。| 保山市| 闻喜县| 繁昌县| 台江县| 林州市| 通化县| 南木林县| 新疆| 沾化县| 永城市| 芦山县| 乌兰察布市| 子长县| 建德市| 天柱县| 宜君县| 永善县| 碌曲县| 康保县| 出国| 陕西省| 钦州市| 彩票| 墨竹工卡县| 通州市| 丘北县| 河源市| 营口市| 玛纳斯县| 永济市| 盈江县| 凤庆县| 龙井市| 淮阳县| 紫金县| 娄烦县|