-
2022-07-22 11:31:31
C# 调用Webservice实例
详细过程
1.得到webservice地址:例如 http://xxx.xxx.x.xxx:xxxx/xxxx.asmx
2.打开vs编译器命令行 【一般位于:开始菜单-Visual Studio XXXX-Visual Studio Tools 中】
3.执行 wsdl /language:c# /n:platService /out:d:\platService.cs http://xxx.xxx.x.xxx:xxxx/xxxx.asmx?wsdl
[
/n: 后接自己声明的命名空间名称
/out: 后接代理类的保存路径+空格+webservice地址+?wsdl
]
4.右键项目解决方案,添加对应保存路径的cs至项目。
5.实例化,调用具体方法。更多相关内容 -
C#调用webservice接口的最新方法教程
2021-01-01 09:44:43Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI... -
C#调用WebService实例与开发教程(推荐)
2020-12-26 02:10:30Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI... -
C# 调用WebService的方法
2020-12-17 04:19:34在日常工作中,如果涉及到与第三方进行接口对接,有的会使用WebService的方式,这篇文章主要讲解在.NET Framework中如何调用WebService。首先我们创建一个WebService,里面有两个方法:一个无参的方法,一个有参的... -
C#调用WebService实例开发
2020-12-26 02:47:15简单的理解就是:webservice 就是放在服务器上的函数,所有人都可以调用,然后返回信息。 比如google就有一个web service ,你调用它就可以很容易的做一个搜索网站。 就像调用函数一样,传入若干参数(比如关键字、... -
C#调用WebService实例和开发(wsdl)
2017-12-14 17:17:57C#调用WebService实例和开发,对于初学者来说,在vs2012环境中,大家有可能不知道Web References文件夹是如何来的,它是通过右击项目,选择其中的”添加服务引用“。 -
C#调用WebService的方法介绍
2022-07-28 14:32:39上面我们说了如何使用静态引用的方式调用WebService,但是这种方式有一个缺点如果发布的WebService地址改变,那么就要重新添加...这篇文章介绍了C#调用WebService的方法,文中通过示例代码介绍的非常详细。...这篇文章介绍了C#调用WebService的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
一、前言
在日常工作中,如果涉及到与第三方进行接口对接,有的会使用WebService的方式,这篇文章主要讲解在.NET Framework中如何调用WebService。首先我们创建一个WebService,里面有两个方法:一个无参的方法,一个有参的方法:创建好了WebService以后,把WebService部署到IIS上,并确保可以访问
二、静态引用
这种方式是通过添加静态引用的方式调用WebService。首先创建一个Winform程序,界面上有一个按钮,点击按钮调用WebService:然后添加静态引用。在要调用WebService的项目上选择引用,然后右键选择“添加服务引用”,如下图所示:
然后输入IIS上部署的WebService地址:
最后点击“确定”按钮即可完成静态引用WebService,添加完成以后的项目结构如下图所示:
添加完引用以后,就可以编写代码了:
/// <summary> /// 静态调用WebService /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_Static_Click(object sender, EventArgs e) { // 实例化类 CallWebService.TestWebSoapClient client = new CallWebService.TestWebSoapClient(); // 调用无参的HelloWorld方法 string value1= client.HelloWorld(); // 调用有参的方法 string value2 = client.Test("有参方法"); // 输出 MessageBox.Show($"无参方法返回值:{value1},有参方法返回值:{value2}"); }
运行程序测试:
这样就可以实现调用WebService了。
三、动态调用
上面我们说了如何使用静态引用的方式调用WebService,但是这种方式有一个缺点:如果发布的WebService地址改变,那么就要重新添加WebService的引用。如果是现有的WebService发生了改变,也要更新现有的服务引用,这需要把代码放到现场才可以。那么有没有什么方式可以解决这种问题呢?那就是使用动态调用WebService的方法。我们在配置文件里面添加配置,把WebService的地址、WebService提供的类名、要调用的方法名称,都写在配置文件里面:
<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>
在界面上添加一个按钮,点击按钮可以动态调用WebService,新建一个帮助类:using System; using System.CodeDom; using System.CodeDom.Compiler; using System.IO; using System.Net; using System.Text; using System.Web; using System.Web.Caching; using System.Web.Services.Description; using System.Xml.Serialization; namespace WebServiceDemo { public class WebServiceHelper { /// <summary> /// 生成dll文件保存到本地 /// </summary> /// <param name="url">WebService地址</param> /// <param name="className">类名</param> /// <param name="methodName">方法名</param> /// <param name="filePath">保存dll文件的路径</param> public static void CreateWebServiceDLL(string url,string className, string methodName,string filePath ) { // 1. 使用 WebClient 下载 WSDL 信息。 WebClient web = new WebClient(); Stream stream = web.OpenRead(url + "?WSDL"); // 2. 创建和格式化 WSDL 文档。 ServiceDescription description = ServiceDescription.Read(stream); //如果不存在就创建file文件夹 if (Directory.Exists(filePath) == false) { Directory.CreateDirectory(filePath); } if (File.Exists(filePath + className + "_" + methodName + ".dll")) { //判断缓存是否过期 var cachevalue = HttpRuntime.Cache.Get(className + "_" + methodName); if (cachevalue == null) { //缓存过期删除dll File.Delete(filePath + className + "_" + methodName + ".dll"); } else { // 如果缓存没有过期直接返回 return; } } // 3. 创建客户端代理代理类。 ServiceDescriptionImporter importer = new ServiceDescriptionImporter(); // 指定访问协议。 importer.ProtocolName = "Soap"; // 生成客户端代理。 importer.Style = ServiceDescriptionImportStyle.Client; importer.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync; // 添加 WSDL 文档。 importer.AddServiceDescription(description, null, null); // 4. 使用 CodeDom 编译客户端代理类。 // 为代理类添加命名空间,缺省为全局空间。 CodeNamespace nmspace = new CodeNamespace(); CodeCompileUnit unit = new CodeCompileUnit(); unit.Namespaces.Add(nmspace); ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit); CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp"); CompilerParameters parameter = new CompilerParameters(); parameter.GenerateExecutable = false; // 可以指定你所需的任何文件名。 parameter.OutputAssembly = filePath + className + "_" + methodName + ".dll"; parameter.ReferencedAssemblies.Add("System.dll"); parameter.ReferencedAssemblies.Add("System.XML.dll"); parameter.ReferencedAssemblies.Add("System.Web.Services.dll"); parameter.ReferencedAssemblies.Add("System.Data.dll"); // 生成dll文件,并会把WebService信息写入到dll里面 CompilerResults result = provider.CompileAssemblyFromDom(parameter, unit); if (result.Errors.HasErrors) { // 显示编译错误信息 System.Text.StringBuilder sb = new StringBuilder(); foreach (CompilerError ce in result.Errors) { sb.Append(ce.ToString()); sb.Append(System.Environment.NewLine); } throw new Exception(sb.ToString()); } //记录缓存 var objCache = HttpRuntime.Cache; // 缓存信息写入dll文件 objCache.Insert(className + "_" + methodName, "1", null, DateTime.Now.AddMinutes(5), TimeSpan.Zero, CacheItemPriority.High, null); } } }
动态调用WebService代码:
/// <summary> /// 动态调用WebService /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_Dynamic_Click(object sender, EventArgs e) { // 读取配置文件,获取配置信息 string url = ConfigurationManager.AppSettings["WebServiceAddress"]; string className = ConfigurationManager.AppSettings["ClassName"]; string methodName = ConfigurationManager.AppSettings["MethodName"]; string filePath = ConfigurationManager.AppSettings["FilePath"]; // 调用WebServiceHelper WebServiceHelper.CreateWebServiceDLL(url, className, methodName, filePath); // 读取dll内容 byte[] filedata = File.ReadAllBytes(filePath + className + "_" + methodName + ".dll"); // 加载程序集信息 Assembly asm = Assembly.Load(filedata); Type t = asm.GetType(className); // 创建实例 object o = Activator.CreateInstance(t); MethodInfo method = t.GetMethod(methodName); // 参数 object[] args = {"动态调用WebService" }; // 调用访问,获取方法返回值 string value = method.Invoke(o, args).ToString(); //输出返回值 MessageBox.Show($"返回值:{value}"); }
程序运行结果:
如果说类名没有提供,可以根据url来自动获取类名:
到此这篇关于C#调用WebService的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。 -
C#调用WebService接口
2013-10-23 19:05:33C#调用WebService接口 -
c# 三种方法调用WebService接口
2020-12-17 05:17:021、引用*.wsdl文件 WebService服务端会提供wsdl文件,客户端通过该文件生成...如上图所示,输入命令“wsdl /language:c# /n:CHEER.PresentationLayer /out:生成类的物理路径(需先创建cs文件) WebService接口URL或wsdl -
C#调用WebService
2022-01-25 13:32:20现在别人给了个非C#开发的webservice,发现引用的方法就不能用了。只好另想其他的方法。 1. net core 下使用 svcutil 具体使用方法可以使用 svcutil /?查看 在Visual studio 下找到 Developer Command Prompt 打卡...之前使用添加引用的方法来实现。现在别人给了个非C#开发的webservice,发现引用的方法就不能用了。只好另想其他的方法。
1. net core 下使用 svcutil 具体使用方法可以使用 svcutil /?查看
在Visual studio 下找到 Developer Command Prompt 打卡如下图
svcutil http://x.x.x.x:8080/service?wsdl
执行完svcutil 后生成 cs文件。将cs文件拷贝到项目中即可使用了
2.使用wsdl命令。这个是用在framework下
wsdl http://x.x.x.x:8080/service?wsdl
以上由于目前条件有限未测试。年后条件具足后开始继续
-
C#调用WebService实例和开发(wsdl).rar
2020-01-06 00:50:29C#调用WebService实例和开发(wsdl).rar -
C#调用WebService简单实例
2018-01-19 11:58:44C#调用WebService的简单实例,WebService其实它就是个对外的接口,里面有函数可供外部客户调用。 -
C#调用webservice的二种方法
2021-11-22 16:29:27【2】使用 HttpPost 请求调用 WebService public class WebServiceDemo : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } [WebMethod]【1】直接添加服务引用,然后调用相关方法。
【2】使用 HttpPost 请求调用 WebService
public class WebServiceDemo : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } [WebMethod] public string Sum(string param1, string param2) { int num1 = Convert.ToInt32(param1); int num2 = Convert.ToInt32(param2); int sum = num1 + num2; return sum.ToString(); } }
客户端调用代码:
class Program { static void Main(string[] args) { Program program = new Program(); string url = "http://localhost:12544/WebServiceDemo.asmx"; string method = "Sum"; string num1 = "1"; string num2 = "2"; string result = program.HttpPostWebService(url, method, num1, num2); Console.WriteLine(result); Console.ReadKey(); } public string HttpPostWebService(string url,string method,string num1,string num2) { string result = string.Empty; string param = string.Empty; byte[] bytes = null; Stream writer = null; HttpWebRequest request = null; HttpWebResponse response = null; param = HttpUtility.UrlEncode("x") + "=" + HttpUtility.UrlEncode(num1) + "&" + HttpUtility.UrlEncode("y") + "=" + HttpUtility.UrlEncode(num2); bytes = Encoding.UTF8.GetBytes(param); request = (HttpWebRequest)WebRequest.Create(url + "/" + method); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = bytes.Length; try { writer = request.GetRequestStream(); //获取用于写入请求数据的Stream对象 } catch (Exception ex) { return ""; } writer.Write(bytes, 0, bytes.Length); //把参数数据写入请求数据流 writer.Close(); try { response = (HttpWebResponse)request.GetResponse(); //获得响应 } catch (WebException ex) { return ""; } #region 这种方式读取到的是一个返回的结果字符串 Stream stream = response.GetResponseStream(); //获取响应流 XmlTextReader Reader = new XmlTextReader(stream); Reader.MoveToContent(); result = Reader.ReadInnerXml(); #endregion #region 这种方式读取到的是一个Xml格式的字符串 //StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); //result = reader.ReadToEnd(); #endregion response.Dispose(); response.Close(); //reader.Close(); //reader.Dispose(); Reader.Dispose(); Reader.Close(); stream.Dispose(); stream.Close(); return result; } }
-
C#:C#调用WebService
2021-01-14 16:38:42一、前言在日常工作中,如果涉及到与第三方进行接口对接,有的会使用WebService的方式,这篇文章主要讲解在.NET Framework中如何调用WebService。首先我们创建一个WebService,里面有两个方法:一个无参的方法,一个... -
C#调用webservice
2020-10-16 11:08:05方法1:利用http 协议的get 和post using System; using System.Collections; using System.IO; using System.Net; using System.Text; using System.Xml; using System.Xml.... /// 利用WebRequest/WebResp... -
C#调用webservice wsdl实例
2022-01-22 15:46:54在C#程序中调用webservice的接口,如果java或其他语言开发的,要请注意调用的方法 ,需要用soap 来调用 但如果webservice是用JAVA或者其它语言或者其它工具生成的话,使用vs+c#来调用就经常遇到问题;就是使用上面... -
C#使用HttpPost请求调用WebService的方法
2021-01-01 00:02:56之前调用 WebService 都是直接添加服务引用,然后调用 WebService 方法的,最近发现还可以使用 Http 请求调用 WebService。这里还想说一句,还是 web api 的调用简单。 WebService 服务端代码: public class ... -
C#调用webservice实现支持静态调用和动态调用
2021-12-13 16:48:07现在将C#调用java平台的webservices功能实现如下。 效果如下: 完整代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; using ... -
C#调用webservice的三种方法总结
2021-03-13 14:11:14【1】直接添加服务引用,然后调用相关方法。public class WebServiceDemo : System.Web.Services.WebService{[WebMethod]public string HelloWorld(){return "Hello World";}[WebMethod]public string Sum(string ... -
C#调用webservice入参出参xml带子节点实体类解析模型
2022-06-02 17:00:13C#调用webservice入参出参xml带子节点实体类解析模型 在调用webservice的时候,接口入参xml格式,有带子节点的情况,就可以如下来根据要去定义节点名称,父节点 子节点 -
【转】c#调用webservice接口服务项目代码,引用*.wsdl文件调用
2022-06-08 10:21:50【转】c#调用webservice接口服务项目代码,引用*.wsdl文件调用 -
C#调用WebService实现天气预报
2021-07-11 15:26:05C#调用WebService实现天气预报C#调用WebService实现天气预报新的改变前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何... -
C# 调用webservice的几种办法
2020-10-16 13:59:13看到很多动态调用WebService都只是动态调用地址而已,下面发一个不光是根据地址调用,方法名也可以自己指定的,主要原理是根据指定的WebService地址的WSDL,然后解析模拟生成一个代理类,通过反射调用里面的方法 : ... -
C#实现SOAP调用WebService.rar
2019-08-09 21:27:18C#实现SOAP调用WebService -
C#调用WebService接口和创建WebService接口
2020-08-27 15:14:42调用WebService接口 对于初学者来说,在vs2012环境中,大家有可能不知道Web References文件夹是如何来的,它是通过右击项目,选择其中的”添加服务引用“,如图所示: 之后,得到”添加服务引用“的页面,我也把...