今天需要跟第三方接入,对方只有JAVA的SDK,没有C#版的,所以需要自己写,调用是发现报错:基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系
之前从没遇到,直接访问对方地址,可以看见左上角显示是不安全的,看来http跟https的调用有差
网上搜了很多资料,原理就不说了,反正是对方的原因,证书没有正确。
我们这边的解决方式是:
https://blog.csdn.net/high_mount/article/details/41281283
添加引用:
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
private void Init()
{
ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate;
}
private static bool RemoteCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
{
System.Console.WriteLine("Warning, trust any certificate");
//为了通过证书验证,总是返回true
return true;
}
可以在需要调用之前先调用 Init();
例如:
Init();
IRestResponse response = client.Execute(request);
if (!response.IsSuccessful)
{
// throw new CallCenterServiceException(null, "InvalidState",
// "Failed to validate state data received from authentication service");
}
return response.Content;