C#调用WebService详细教程:静态与动态引用
"C# 调用WebService的方法" 在C#开发中,有时需要与远程服务进行交互,这时Web Service成为一种常见的通信方式。本文详细介绍了两种在.NET Framework环境下使用C#调用Web Service的方法:静态引用和服务代理的动态创建。 一、静态引用 静态引用是通过在项目中添加对Web Service的引用来实现调用。首先,你需要创建一个Web Service,定义一些方法,例如一个没有参数的`HelloWorld`方法和一个带参数的`Test`方法。将Web Service部署到IIS并确保其可被访问。 在Winform或Console应用程序中,你可以通过以下步骤添加对Web Service的静态引用: 1. 在项目上选择“添加引用”。 2. 右键点击“添加服务引用”。 3. 输入Web Service的URL。 4. 点击“确定”完成引用添加。 添加完成后,项目中会自动生成一个服务代理类,例如`CallWebService.TestWebSoapClient`。你可以通过实例化这个类并调用其方法来调用Web Service。以下是一个示例代码: ```csharp private void btn_Static_Click(object sender, EventArgs e) { // 实例化服务代理类 CallWebService.TestWebSoapClient client = new CallWebService.TestWebSoapClient(); // 调用无参方法 string value1 = client.HelloWorld(); // 调用有参方法 string value2 = client.Test("有参方法"); // 显示结果 MessageBox.Show($"无参方法返回值:{value1},有参方法返回值:{value2}"); } ``` 运行程序,点击按钮,即可看到Web Service方法的调用结果。 二、动态调用 静态引用虽然方便,但当Web Service的地址变更时,需要重新添加引用。为了解决这个问题,可以使用`System.ServiceModel`命名空间中的类动态创建服务代理。这种方式更灵活,但需要手动处理类型转换和错误处理。 动态调用的基本步骤如下: 1. 创建`System.ServiceModel.ChannelFactory`对象,指定Web Service的协定和服务终结点。 2. 使用`CreateChannel`方法创建服务代理实例。 3. 通过代理实例调用Web Service方法。 4. 不要忘记关闭通道和工厂,释放资源。 以下是一个动态调用的示例代码片段: ```csharp using System.ServiceModel; // 定义服务接口 [ServiceContract(Namespace = "http://yourwebservicenamespace.com")] public interface ITestWebService { [OperationContract] string HelloWorld(); [OperationContract] string Test(string input); } private void btn_Dynamic_Click(object sender, EventArgs e) { // 创建终结点地址 EndpointAddress address = new EndpointAddress("http://yourwebserviceurl.com/Service.asmx"); // 创建绑定,这里以BasicHttpBinding为例 BasicHttpBinding binding = new BasicHttpBinding(); // 创建ChannelFactory并指定服务接口和绑定 ChannelFactory<ITestWebService> factory = new ChannelFactory<ITestWebService>(binding, address); try { // 创建服务代理 ITestWebService proxy = factory.CreateChannel(); // 调用方法 string value1 = proxy.HelloWorld(); string value2 = proxy.Test("有参方法"); // 显示结果 MessageBox.Show($"无参方法返回值:{value1},有参方法返回值:{value2}"); // 关闭通道和工厂 ((IClientChannel)proxy).Close(); factory.Close(); } catch (Exception ex) { // 错误处理 MessageBox.Show($"调用出错:{ex.Message}"); ((ICommunicationObject)proxy).Abort(); factory.Abort(); } } ``` 总结,C#调用Web Service提供了静态引用和动态创建服务代理两种方式。静态引用适合于Web Service地址稳定的情况,而动态调用则更适合于地址可能变化的场景。理解这两种方法可以帮助开发者更好地应对不同情况下的Web Service调用需求。
下载后可阅读完整内容,剩余4页未读,立即下载
- 粉丝: 9
- 资源: 940
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构