c#——web service异构系统调用
来源:互联网 发布:co网络用语是什么意思 编辑:程序博客网 时间:2024/06/05 00:26
public static class WebServiceInvoker { /// <summary> /// 动态调用WebService /// </summary> /// <param name="url">WebService地址</param> /// <param name="methodname">方法名(模块名)</param> /// <param name="args">参数列表,无参数为null</param> /// <returns>object</returns> public static object InvokeWebService(string url, string methodname, object[] args) { return InvokeWebService(url, null, methodname, args); } /// <summary> /// 动态调用WebService /// </summary> /// <param name="url">WebService地址</param> /// <param name="classname">类名</param> /// <param name="methodname">方法名(模块名)</param> /// <param name="args">参数列表</param> /// <returns>object</returns> public static object InvokeWebService(string url, string classname, string methodname, object[] args) { string @namespace = "WebService.webservice"; if (classname == null || classname == "") { classname = WebServiceInvoker.GetClassName(url); } WebClient wc = new WebClient(); Stream stream = wc.OpenRead(url + "?WSDL"); //获取服务描述语言(WSDL) ServiceDescription sd = ServiceDescription.Read(stream); //通过直接从 Stream实例加载 XML 来初始化ServiceDescription类的实例。 ServiceDescriptionImporter sdi = new ServiceDescriptionImporter(); sdi.AddServiceDescription(sd, "", ""); CodeNamespace cn = new CodeNamespace(@namespace); //CodeNamespace表示命名空间声明。 //生成客户端代理类代码 CodeCompileUnit ccu = new CodeCompileUnit(); ccu.Namespaces.Add(cn); sdi.Import(cn, ccu); CSharpCodeProvider csc = new CSharpCodeProvider(); ICodeCompiler icc = csc.CreateCompiler();//取得C#程式码编译器的执行个体 //设定编译器的参数 CompilerParameters cplist = new CompilerParameters();//创建编译器的参数实例 cplist.GenerateExecutable = false; cplist.GenerateInMemory = true; cplist.ReferencedAssemblies.Add("System.dll"); cplist.ReferencedAssemblies.Add("System.XML.dll"); cplist.ReferencedAssemblies.Add("System.Web.Services.dll"); cplist.ReferencedAssemblies.Add("System.Data.dll"); //编译代理类 CompilerResults cr = icc.CompileAssemblyFromDom(cplist, ccu); if (true == cr.Errors.HasErrors) { System.Text.StringBuilder sb = new StringBuilder(); foreach (CompilerError ce in cr.Errors) { sb.Append(ce.ToString()); sb.Append(System.Environment.NewLine); } throw new Exception(sb.ToString()); } //生成代理实例,并调用方法 System.Reflection.Assembly assembly = cr.CompiledAssembly; Type t = assembly.GetType(@namespace + "." + classname, true, true); object obj = Activator.CreateInstance(t); System.Reflection.MethodInfo mi = t.GetMethod(methodname);//MethodInfo 的实例可以通过调用GetMethods或者Type对象或派生自Type的对象的GetMethod方法来获取,还可以通过调用表示泛型方法定义的 MethodInfo 的MakeGenericMethod方法来获取。 return mi.Invoke(obj, args); } private static string GetClassName(string url) { //假如URL为"http://localhost/InvokeService/Service1.asmx" //最终的返回值为 Service1 string[] parts = url.Split('/'); string[] pps = parts[parts.Length - 1].Split('.'); return pps[0]; } }
#region webservice调用示例 //string url = "http://localhost:31578/TestWebService.asmx"; //string methodName = "HelloWorld"; //String result = WebServiceInvoker.InvokeWebService(url, methodName, null).ToString(); //Console.WriteLine("测试调用本地webService方法结果:" + result); #endregion
0 0
- c#——web service异构系统调用
- 解决异构系统之间交互——Web Service
- 解决异构系统之间交互——Web Service
- 解决异构系统之间交互——Web Service
- Delphi 调用.NET(C#) Web Service
- Objective-C调用Web Service示例
- gsoap 实现 C/C++ 调用web service
- Android中Web Service学习(二)——Android调用Web Service实例
- web service—底层调用本质+WSDL文档解析
- 配置SAP ECC直接调用外部系统的Web Service
- 在Salesforce中创建Web Service供外部系统调用
- java如何调用其他系统的web service接口
- 动态调用Web Service
- js调用web service
- Web Service 异步调用
- 调用 Web Service 示例
- ASP 调用 web service
- 异步调用Web Service
- SQL中定义主键的方法
- WEBRTC视频网络传输到解码输出
- 122. Best Time to Buy and Sell Stock II的C++解法
- AndroidStudio下设置自动注释作者和一些预设信息
- jsp--对象感知监听器
- c#——web service异构系统调用
- shell alias 别名
- CodeForces 641 A.Little Artem and Grasshopper(水~)
- Android App包瘦身优化实践
- 文章标题
- python获取交互式ssh shell
- DOM的三大结点:元素结点、文本结点、属性结点
- 关于androidpulltorefresh
- zlib error while attempting compression: "Ran out of output buffer for writing compressed bytes."