博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转 c#代码访问https服务器以及https的webservice
阅读量:5122 次
发布时间:2019-06-13

本文共 2487 字,大约阅读时间需要 8 分钟。

最近公司做到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();        }

转载于:https://www.cnblogs.com/niye/p/5236825.html

你可能感兴趣的文章
PCB自动标号
查看>>
python---基础之模块,列表,元组,字典
查看>>
购书网
查看>>
【Spark学习】Apache Spark集群硬件配置要求
查看>>
1003 我要通过! (20 分)
查看>>
数组基础知识总结
查看>>
称体重
查看>>
Mac OS 怎么修改 PATHS 环境变量
查看>>
Xcode7添加pch文件(转载)
查看>>
原型与原型链
查看>>
异常及处理
查看>>
测试开发之利器论战
查看>>
黑马程序员---java基础-Java类 继承&抽象&接口
查看>>
轻松精通awk数组企业问题案例
查看>>
第四十一篇 面向对象基础
查看>>
如何求F-闭包、候选码求解、范式判断及BCNF分解
查看>>
Hibernate第七篇【对象状态、一级缓存】
查看>>
day_5:Ajax数据爬取
查看>>
Spark异步job
查看>>
【NetXMS】工具介绍
查看>>