出现错误:
带HTTPS的API调用是一直提示:[基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系]
原因:校验SSL导致的
解决方法:不校验
整体代码
public class HttpFunction
{
//不校验ssl证书
public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{ // 总是接受
return true;
}
public string DoPost(string url, object param,int timeout,string method)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Accept = "*/*";
request.ContentType = "application/json";
//request.Timeout = Timeout.Infinite;
request.Timeout = timeout;
request.Method = method;
request.Proxy = null;
string json = JsonConvert.SerializeObject(param);
byte[] data = Encoding.UTF8.GetBytes(json);
request.ContentLength = data.Length;
//不校验SSL
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
stream.Flush();
}
try
{
using (StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream()))
{
string result = reader.ReadToEnd();
return result;
}
}
catch (Exception ex)
{
return "-1";
}
}
}
string urlPath = "https://192.xx.xx.xx:8091/wxxxapi/xx";
Dictionary<string, object> dicParm = new Dictionary<string, object>();
dicParm.Add("outTradeNo", 1);
dicParm.Add("transNo", 1);
dicParm.Add("type", 1);
dicParm.Add("amount", 1);
dicParm.Add("refundDesc", 1);
dicParm.Add("TkUser", 1);
HttpFunction http = new HttpFunction();
string result = http.DoPost(urlPath, dicParm, 8000,"Post");