详解.NET Core 使用HttpClient SSL请求出错的解决办法 |
|
问题 使用 HTTP Client 请求 HTTPS 的 API 时出现 下面就是问题代码:
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
ootTrust.cer","11111111"),
new X509Certificate2(@"E:certmiddleTrust.cer","11111111"),
new X509Certificate2(@"E:certwskey.pfx","ws654321")
}
};
var webRequest = new HttpClient(handler);
var result = webRequest.GetStringAsync(url).GetAwaiter().GetResult();
Console.WriteLine(result);
}
}
原因 因为在发出 HTTPS 请求的时候,HttpClient 都会检查 SSL 证书是否合法 。如果不合法的话,就会导致抛出异常信息,而对方给出的证书是自签发的测试接口的证书,所以不是一个合法的 SSL 证书 。 解决 在 最新的代码如下:
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
ootTrust.cer","11111111"),
new X509Certificate2(@"E:certmiddleTrust.cer","11111111"),
new X509Certificate2(@"E:certwskey.pfx","ws654321")
}
};
var webRequest = new HttpClient(handler);
var result = webRequest.GetStringAsync(url).GetAwaiter().GetResult();
Console.WriteLine("xx");
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家 。 您可能感兴趣的文章:
|