• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

转c#代码访问https服务器以及https的webservice

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近公司做到WebService项目,但是要通过Https调用,自己在网上搜了半天,终于实现了服务端的Https,但是一直没有找到客户端如何实现,今天终于看到这篇文章,随手记录下来。

具体代码如下:

访问https的web

 public static void ProcessRequest()
        {
            //类似浏览器确认证书合法方法的绑定
            ServicePointManager.ServerCertificateValidationCallback = RemoteCertificateValidationCallback;
            
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://yourUrl");

            string param = "test=true";
            byte[] bs = Encoding.UTF8.GetBytes(param);

            //这2句代码表示如果要求客户端证书,将客户端证书加入request,不需要客户端证书的https请求则不需要此代码
            X509Certificate cer = new X509Certificate("D:\\tt.cer");
            request.ClientCertificates.Add(cer);

            request.UserAgent = "test";
            request.Method = "post";

            using (Stream reqStram = request.GetRequestStream())
            {
                reqStram.Write(bs, 0, bs.Length);
            }

            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    Console.WriteLine(reader.ReadToEnd());
                }
            }
            
            Console.ReadKey();
        }
        //该方法用于验证服务器证书是否合法,当然可以直接返回true来表示验证永远通过。服务器证书具体内容在参数certificate中。可根据个人需求验证
        //该方法在request.GetResponse()时触发
        public static bool RemoteCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            if (sslPolicyErrors == SslPolicyErrors.None)
                return true;
            return false;
        }

访问https的web service基本类同,首先添加对https的web引用。

在代码中:

 

public static void WebRefrence()
        {
            //如果觉得写一个委托方法麻烦,可以直接使用匿名委托
            ServicePointManager.ServerCertificateValidationCallback = delegate(object sender, X509Certificate certificate, 
                X509Chain chain, SslPolicyErrors errors)
            {
                if (errors == SslPolicyErrors.None)
                    return true;
                return false;
            };

            //创建web引用的实例
            WebReference.Service ws = new WebReference.Service();

            //提供客户端证书,不要求的可以忽略该步骤
            ws.ClientCertificates.Add(new X509Certificate("D:\\tt.cer"));
            //执行web service中提供的方法,该例中为将传入的2个int相加并返回结果
            int r = ws.Add(4, 5);
            Console.WriteLine(r);
            Console.ReadKey();
        }

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
OracleDatabase12cRelease1InstallationOnOracleLinux6.4x86_64发布时间:2022-07-13
下一篇:
C/C++高精度运算(大整数运算)详解(含压位)发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap