C#访问https的webservice

今天在通过C#访问webservice时遇到一个问题,首先通过对方提供的wsdl生成了调用代理类,在测试能否正常访问时,本机调试(http协议)一切正常,当访问正式环境时(https协议),总是报“基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系”InnerException信息为:根据验证过程,远程证书无效。
在网上找到解决方法:
http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/1591a00d-d431-4ad8-bbd5-34950c39d563
依照上面的描述操作,问题解决,以作纪念
分以下三步:
1.添加引用
using System.Net;
using System.Net.Security;
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
2.在生成的代理类中添加RemoteCertificateValidate函数
private static bool RemoteCertificateValidate(object sender, X509Certificate cert,X509Chain chain, SslPolicyErrors error)
{
    System.Console.WriteLine("Warning, trust any certificate");
    //为了通过证书验证,总是返回true
    return true;
}
3.在生成的代理类的构造函数中添加
//验证服务器证书回调
ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate;

C#中调用WebService有三种方式:直接引用、引用wsdl和soap请求。如果开发者可以直接访问webservice,可以使用直接引用的方式。在Visual Studio中,可以通过添加服务引用来直接引用webservice,系统会自动生成引用代码。然后可以实例化引用的webservice对象来使用。\[2\] 如果无法直接访问webservice,可以使用引用wsdl文件的方式。首先需要获取webservice的wsdl文件,可以通过浏览器打开webservice服务,然后查看服务说明,这就是整个wsdl的内容。将wsdl文件保存为文本文件,然后将后缀名改为wsdl。在Visual Studio中,同样可以通过添加服务引用来引用wsdl文件,将wsdl文件的路径输入到URL中即可。然后可以实例化引用的webservice对象来使用。\[3\] 最后一种方式是使用SOAP请求来调用webservice。这种方式适用于无法直接引用webservice或wsdl文件的情况。可以使用HttpPost请求来发送SOAP请求,并解析返回的SOAP响应。这种方式需要手动构建SOAP请求和解析SOAP响应,相对复杂一些。 总结起来,C#调用webservice可以通过直接引用、引用wsdl和soap请求三种方式来实现。具体选择哪种方式取决于开发者的需求和情况。 #### 引用[.reference_title] - *1* [【C#】调用 webservice 的三种方法总结](https://blog.csdn.net/weixin_44231544/article/details/124922474)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [C#调用WebService的三种方式](https://blog.csdn.net/m0_43398336/article/details/105082177)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值