C#调用webapi HTTPS报错:基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系--安全证书问题

这篇具有很好参考价值的文章主要介绍了C#调用webapi HTTPS报错:基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系--安全证书问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、首先加入命名空间:
using System.Net.Security;
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;

SSL网站,连接时需要提供证书,对于非必须提供客户端证书的情况,只要返回一个安全确认即可。我的是.NET FrameWork4.0

2、加入以下代码:

 public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
    {
        //直接确认,否则打不开
        return true;
    }

3、接收证书进行身份验证ssl,在调用api接口前调用此方法:
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);

以下是完整案例:

 public string HttpPost(string url, string body)
    {
        Encoding encoding = Encoding.UTF8;
        string jsonText = string.Empty;
        string dataText1 = string.Empty;
        if (string.IsNullOrEmpty(url.Trim()))
        {
            return "";
        }
        //接收证书进行身份验证
        ServicePointManager.ServerCertificateValidationCallback =
            new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
        //ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "POST";
        request.Accept = "text/plain, */*; q=0.01";
        request.ContentType = "application/json;charset=utf-8";
        byte[] buffer = encoding.GetBytes(body);
        request.ContentLength = buffer.Length;
        request.GetRequestStream().Write(buffer, 0, buffer.Length);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
        {
            jsonText = reader.ReadToEnd();
            dataText1 = Regex.Replace(jsonText, @"\\", "");
        }
        return dataText1;
    }

调用:
dlbzUrl是调用地址 https://…/api/tddbzzljcxt/zybrxx/vnoentry-query
model.FCYRQSTART 开始时间
model.FCYRQEND 结束时间文章来源地址https://www.toymoban.com/news/detail-535575.html

  string DaliBaiHospitalJson = HttpPost(dlbzUrl, "{\"FIDATES\":\"" + model.FCYRQSTART + " 00:00:00" + "\",\"FIDATEE\":\"" + model.FCYRQEND + " 23:59:59" + "\"}");

到了这里,关于C#调用webapi HTTPS报错:基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系--安全证书问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 调用WebAPI的提示:由于远程方已关闭传输流,身份验证失败。

    这是我的API调用代码,然后一开始提示:由于远程方已关闭传输流,身份验证失败。 我以为是因为Https 的原因: 所以添加代码来忽略SSL证书但是还是不行 于是想想应该可能是http协议的问题 于是 问题成功解决 分析原因应该是.Net 4.6以下版本协议固定的原因,升级.Net框架版本

    2024年02月08日
    浏览(58)
  • C# webapi接口调用实例

    书接上回C# WebServiceWebApi接口项目创建,在demo的基础上进行webapi接口调用实例开发。 WebApi接口项目public分支https://gitee.com/xiuhuang/webapi_demo 进行接口调用的类库项目public分支https://gitee.com/xiuhuang/dll_demo 下文中提到的所有修改都可以在gitee上看到与demo的修改处直观对比,并且复制

    2024年02月07日
    浏览(34)
  • C# iis WebAPI无法调用CngKey模块

    报错:找不到指定文件 解决方式:给Web.config文件中增加管理员权限配置 identity impersonate=\\\"true\\\" userName=\\\"Administrator\\\" password=\\\"password\\\" / 示例: 在此示例中,我们将identity元素添加到system.web元素中,并设置\\\"impersonate\\\"属性为\\\"true\\\",表示应用程序将使用指定的用户名和密码模拟管理员

    2024年02月12日
    浏览(40)
  • [入门一]C# webApi创建、与发布、部署、api调用

    一. 创建 web api项目 1.1、项目创建 MVC架构的话,它会有view-model-control三层,在web api中它的前端和后端是分离的,所以只在项目中存在model-control两层 1.2、修改路由 打开App_Start文件夹下,WebApiConfig.cs , 修改路由,加上{action}/ ,这样就可以在api接口中通过接口函数名,来导向我

    2024年02月05日
    浏览(27)
  • C# 调用FiddlerCore实现http/https抓包

    FiddlerCore是 Telerik 的跨平台 .NET 库,它允许捕获和修改 HTTP/HTTPS 流量。使用 FiddlerCore 的一些最流行的应用程序是 Telerik Fiddler(基于 .NET Framework 并在 Windows 上运行)和 Fiddler Everywhere(基于 .NET Core 并在 Windows、Mac 和 Linux 上运行)。 关键信息:FiddlerCore跨平台.net库,可以捕获

    2024年02月12日
    浏览(32)
  • C#调用office interop接口打开word、excel、ppt,拦截处理关闭、保存事件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using WordLib = Microsoft.Office.Interop.Word; using ExcelLib = Microsoft.Office.Interop.Excel; using PptLib = Microsoft.Office.Interop.PowerPoint

    2024年02月07日
    浏览(67)
  • C# 服务HTTPS 对 请求被中止: 未能创建 SSL/TLS 安全通道报错

    [WebMethod(Description = \\\"获取HttpsPost加密服务.\\\")]         public string HTTPSPOST(String input,String sUrl)         {             Log.Add(\\\"ReceiveNotice\\\", \\\"HTTPSPOST\\\", \\\"入参sUrl:\\\" + sUrl + \\\",input:\\\" + input);             HttpWebRequest webReq = null;                            ServicePointManager.ServerCertificateV

    2024年02月11日
    浏览(23)
  • java调用https服务的ip地址报错证书问题解决:SSLPeerUnverifiedException: Certificate fo

    问题描述: java项目调用微信api的域名接口正常: String wxAccessTokenUrl = \\\"https://api.weixin.qq.com/cgi-bin/token?\\\"; 因项目要求采用ip访问外部服务,所以ping api.weixin.qq.com 得到域名对应的ip为101.91.37.13, 所以替换java调用api接口为:\\\"https://101.91.37.13/cgi-bin/token?\\\"; 此时项目代码调用api接口为

    2024年02月12日
    浏览(32)
  • Navicat连接SQLSever报错:[08001] [Microsoft][SQL Server Native Client 10.0]TCP Provider: 远程主机强迫关闭了一个现有的连接

    [08001] [Microsoft][SQL Server Native Client 10.0]TCP Provider: 远程主机强迫关闭了一个现有的连接 (10054) [080011 MicrosoftSQL Server Native Client 10.01Client unable to establish connection (10054) 这问题在网上找了好多方法试了都不行,比如防火墙,TCP/IP的原因等等一系列问题。但是我尝试后都不太行。 直

    2024年02月04日
    浏览(27)
  • python网络编程:处理socket报错“ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。”的问题

    由于这个问题网上的资料特别少,所以在这里记录一下。 当使用socket以udp形式向对方发送数据时(局域网),如果对方的ip和端口未开启,导致未接收,然后使用socket接收时就会出现一串报错信息 产生这个信息的原因是因为发送的信息没有传输成功,而报错的提示会产生在之

    2024年02月09日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包