一、前言 在日常工作中,如果涉及到与第三方进行接口对接,有的会使用WebService的方式,这篇文章主要讲解在.NET Framework中如何调用WebService。首先我们创建一个WebService,里面有两个方法:一个无参的方法,一个有参的方法: 创建好了WebService以后,把WebService部署到IIS上,并确保可以访问 二、静态引用 这种方式是通过添加静态引用的方式调用WebService。首先创建一个Winform程序,界面上有一个按钮,点击按钮调用WebService: 然后添加静态引用。在要调用WebService的项目上选择引用,然后右键选择“添加服务引用 【C# 调用WebService的方法】 在.NET Framework的开发中,经常需要与其他系统或服务进行接口集成,其中一种常见的通信方式就是使用WebService。本文将详细介绍两种在C#中调用WebService的方法:静态引用和动态调用。 ### 一、创建WebService 在开始调用WebService之前,首先需要创建一个WebService。这通常涉及编写一个ASMX文件,包含一个或多个Web方法。例如,我们可以创建一个名为`TestWeb.asmx`的WebService,其中包含一个无参数的`HelloWorld`方法和一个带参数的`Test`方法。 ```csharp [WebService(Namespace = "http://tempuri.org/")] public class TestWeb : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello, World!"; } [WebMethod] public string Test(string param) { return $"You passed the parameter: {param}"; } } ``` 部署完成后,确保WebService可以通过HTTP访问。 ### 二、静态引用 静态引用是通过在项目中添加服务引用来实现的。在Winform应用中,我们可以在UI上添加一个按钮,当点击按钮时调用WebService。以下是如何添加静态引用并调用WebService的步骤: 1. 右键单击项目,在“引用”菜单中选择“添加服务引用”。 2. 输入WebService的URL(例如`http://localhost:9008/TestWeb.asmx`)。 3. 点击“确定”,Visual Studio会自动生成一个代理类,使得可以直接调用WebService的方法。 添加完成后,可以编写如下代码调用WebService: ```csharp private void btn_Static_Click(object sender, EventArgs e) { // 实例化WebService的客户端类 CallWebService.TestWebSoapClient client = new CallWebService.TestWebSoapClient(); // 调用无参数的方法 string value1 = client.HelloWorld(); // 调用有参数的方法 string value2 = client.Test("有参方法"); // 显示结果 MessageBox.Show($"无参方法返回值:{value1},有参方法返回值:{value2}"); } ``` 运行程序,点击按钮即可看到调用结果。 ### 三、动态调用 静态引用虽然简单,但当WebService的地址或结构发生变化时,需要重新添加引用。为了解决这个问题,可以使用动态调用来调用WebService,这种方法更加灵活。动态调用的关键在于在运行时生成并加载代理类。 将WebService的相关信息存储在配置文件`app.config`中,如地址、类名和方法名: ```xml <appSettings> <!--WebService地址--> <add key="WebServiceAddress" value="http://localhost:9008/TestWeb.asmx"/> <!--WebService提供的类名--> <add key="ClassName" value="TestWeb"/> <!--WebService方法名--> <add key="MethodName" value="Test"/> <!--存放dll文件的地址--> <add key="FilePath" value="E:\Test"/> </appSettings> ``` 然后,创建一个`WebServiceHelper`类来动态生成并加载代理类: ```csharp public class WebServiceHelper { public static void CreateWebServiceDLL(string url, string className, string methodName, string filePath) { // ... // 生成并保存dll文件的代码 // ... } public static object CallWebService(string url, string className, string methodName, params object[] args) { // ... // 动态调用WebService的方法 // ... } } ``` 在Winform应用中,使用这个帮助类来调用WebService: ```csharp private void btn_Dynamic_Click(object sender, EventArgs e) { // 获取配置信息 string url = ConfigurationManager.AppSettings["WebServiceAddress"]; string className = ConfigurationManager.AppSettings["ClassName"]; string methodName = ConfigurationManager.AppSettings["MethodName"]; // 调用动态方法 object result = WebServiceHelper.CallWebService(url, className, methodName, "动态参数"); // 显示结果 MessageBox.Show(result.ToString()); } ``` 这样,即使WebService发生变化,只需更新配置文件,而无需修改代码。 总结,C#中调用WebService的方法主要包括静态引用和动态调用。静态引用适用于稳定且较少变动的环境,而动态调用则适用于需要频繁变化或不希望硬编码服务信息的场景。理解这两种方法的使用,能更好地应对不同情况下的WebService交互需求。
- qd2588dq2023-09-18不是代码,一个ppt,看的费劲
- 粉丝: 8
- 资源: 940
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 5G建设和AI技术推动下,中证5G通信ETF的投资价值探讨
- Python项目之淘宝模拟登录.zip
- 课程设计项目:python+QT实现的小型编译器.zip
- (源码)基于AVR ATmega644的智能卡AES解密系统.zip
- (源码)基于C++插件框架的计算与打印系统.zip
- (源码)基于Spring Boot和Vue的苍穹外卖管理系统.zip
- (源码)基于wxWidgets库的QMiniIDE游戏开发环境管理系统.zip
- 通过C++实现原型模式(Prototype Pattern).rar
- 学习记录111111111111111111111111
- 通过java实现原型模式(Prototype Pattern).rar