代码动态调用webservice的类
来源:互联网 发布:网络电视机顶盒通用吗 编辑:程序博客网 时间:2024/06/13 01:10
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Net;using System.IO;using System.Web;//需要右键添加.NET组件System.Web,System.Web.Services,System.Web.Extensions。using System.Web.Services;using System.Web.Services.Description;using System.Web.Services.Protocols;using System.Xml.Serialization;using System.CodeDom;using System.CodeDom.Compiler;using System.Reflection;namespace myWebServiceNameSpace{ class myWebServiceClass { /// <summary> /// webservice返回是string的,使用该方法 /// </summary> /// <param name="url">调用webservice的url</param> /// <param name="className">webservice的类</param> /// <param name="methodName">调用webservice的方法</param> /// <param name="parameters">方法的参数</param> /// <returns>string</returns> public string resultString(string url, string className, string methodName, object[] parameters) { string resultA = ""; try { // 1. 使用 WebClient 下载 WSDL 信息。 WebClient client = new WebClient(); url = url + "?WSDL"; Stream stream = client.OpenRead(url); // 2. 创建和格式化 WSDL 文档。 ServiceDescription description = ServiceDescription.Read(stream); // 3. 创建客户端代理代理类。 ServiceDescriptionImporter importer = new ServiceDescriptionImporter();//创建客户端代理代理类。 importer.ProtocolName = "Soap"; //指定访问协议。 importer.Style = ServiceDescriptionImportStyle.Client; //生成客户端代理。 importer.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync; importer.AddServiceDescription(description, null, null); //添加WSDL文档。 // 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.ReferencedAssemblies.Add("System.dll"); parameter.ReferencedAssemblies.Add("System.XML.dll"); parameter.ReferencedAssemblies.Add("System.Web.Services.dll"); parameter.ReferencedAssemblies.Add("System.Data.dll"); CompilerResults result = provider.CompileAssemblyFromDom(parameter, unit); // 5. 使用 Reflection 调用 WebService。 Assembly asm = result.CompiledAssembly; Type t = asm.GetType(className); //参数为web服务中的类名 object o = Activator.CreateInstance(t); MethodInfo method = t.GetMethod(methodName);//参数方法名 resultA = (string)method.Invoke(o, parameters); } catch (Exception ex) { resultA = ex.ToString(); } return resultA; } /// <summary> /// webservice返回是DataSet的,使用该方法 /// </summary> /// <param name="url">调用webservice的url</param> /// <param name="className">webservice的类</param> /// <param name="methodName">调用webservice的方法</param> /// <param name="parameters">方法的参数</param> /// <returns>DataSet</returns> public DataSet resultDataSet(string url, string className, string methodName, object[] parameters) { DataSet resultA =null; try { // 1. 使用 WebClient 下载 WSDL 信息。 WebClient client = new WebClient(); url = url + "?WSDL"; Stream stream = client.OpenRead(url); // 2. 创建和格式化 WSDL 文档。 ServiceDescription description = ServiceDescription.Read(stream); // 3. 创建客户端代理代理类。 ServiceDescriptionImporter importer = new ServiceDescriptionImporter();//创建客户端代理代理类。 importer.ProtocolName = "Soap"; //指定访问协议。 importer.Style = ServiceDescriptionImportStyle.Client; //生成客户端代理。 importer.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync; importer.AddServiceDescription(description, null, null); //添加WSDL文档。 // 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.ReferencedAssemblies.Add("System.dll"); parameter.ReferencedAssemblies.Add("System.XML.dll"); parameter.ReferencedAssemblies.Add("System.Web.Services.dll"); parameter.ReferencedAssemblies.Add("System.Data.dll"); CompilerResults result = provider.CompileAssemblyFromDom(parameter, unit); // 5. 使用 Reflection 调用 WebService。 Assembly asm = result.CompiledAssembly; Type t = asm.GetType(className); //参数为web服务中的类名 object o = Activator.CreateInstance(t); MethodInfo method = t.GetMethod(methodName);//参数方法名 resultA = (DataSet)method.Invoke(o, parameters); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } return resultA; } }}
以上是.cs中的代码。
private void button3_Click(object sender, EventArgs e) { myWebServiceNameSpace.myWebServiceClass myWeb = new myWebServiceNameSpace.myWebServiceClass(); string url = "http://10.19.1.55/123/WebService1.asmx"; string className = "WebService1"; string methodName = "addition"; object[] parameters = new object[2]; parameters[0] = 1; parameters[1] = 2; double a = myWeb.resultString(url, className, methodName, parameters); MessageBox.Show(a.ToString()); }
以上是主程序中的代码。
- 代码动态调用webservice的类
- 动态调用webservice的类
- 客户端动态调用WebService的类
- 动态调用WebService的工具类
- 动态调用webservice的函数
- C# WebService 的动态调用
- 动态调用WebService的方法
- WebService 动态调用帮助类
- 动态库动态调用WEbservice的问题!
- 动态调用webservice的类(的说明)
- 一个能动态调用webservice的类 (c#)
- webservice的配置动态调用方法
- 关于动态调用webservice的方法
- PDA动态调用JAVA提供的WebService
- 动态调用webservice的三种方式
- Winform动态调用Webservice的方法
- 动态调用WebService 的相关方法
- 动态调用WebService服务的方法
- 改变MFC默认文档操作方式
- java中注解
- 【java时间戳】时间戳转时间
- 线段树,树状数组
- java实现全排列
- 代码动态调用webservice的类
- Oracle体系结构及备份(四)——server-process
- 【TabHost】Android设置TabHost文字及图片
- java实现水仙花数
- 三层架构——U层、B层、D层,层层深入
- java调用PLSQL分页过程
- C++内存管理——引用计数
- 编程语言中,Java语言的特殊地位
- android播放器学习心得