C# http和https跳过SSL证书认证

public static string PostUrl(string url, string jsonContent, ref string message)
{
	try
	{
        HttpWebRequest request;
        //如果url是以https开头的
        if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
        {
			//去掉SSL证书认证
			ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);//验证服务器证书回调自动验证
			ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
			request = (HttpWebRequest)WebRequest.Create(url);
			request.ProtocolVersion = HttpVersion.Version10;
        }
        else
        {
			//http开头的
			request = (HttpWebRequest)WebRequest.Create(url);
			//跳过证书校验
			request.ServerCertificateValidationCallback = (_s, _x509s, _x509c, _ssl) => { return (true); };
        }

        request.Method = "POST";
        request.ContentType = "application/json; charset=utf-8";
        byte[] bArr = Encoding.UTF8.GetBytes(jsonContent);
        request.ContentLength = bArr.Length;
        request.GetRequestStream().Write(bArr, 0, bArr.Length);

        //步骤③  向网关发送请求
        string result = "";
        using (var res = request.GetResponse())
        using (var responseStream = res.GetResponseStream())
        {
			// 步骤④ 返回响应信息
			using (StreamReader reader = new StreamReader(responseStream, Encoding.UTF8))
				{
					result = reader.ReadToEnd();
				}
        }
        return result;
	}
	catch (Exception ex)
	{
		message = ex.Message;
		return "";
	}
}


private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{   
	// 总是接受  
	return true;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值