public class WebServiceHelper{//动态调用web服务public static object InvokeWebService(string url, string methodname, object[] args){return WebServiceHelper.InvokeWebService(url, null, methodname, args);}public static object InvokeWebService(string url, string classname, string methodname, object[] args){string @namespace = "EnterpriseServerBase.WebService.DynamicWebCalling";if ((classname == null) || (classname == "")){classname = WebServiceHelper.GetWsClassName(url);}try{//获取WSDLWebClient wc = new WebClient();Stream stream = wc.OpenRead(url + "?WSDL");ServiceDescription sd = ServiceDescription.Read(stream);ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();sdi.AddServiceDescription(sd, "", "");CodeNamespace cn = new CodeNamespace(@namespace);//生成客户端代理类代码CodeCompileUnit ccu = new CodeCompileUnit();ccu.Namespaces.Add(cn);sdi.Import(cn, ccu);CSharpCodeProvider csc = new CSharpCodeProvider();ICodeCompiler icc = csc.CreateCompiler();//设定编译参数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 System.Text.StringBuilder();foreach (System.CodeDom.Compiler.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);return mi.Invoke(obj, args);}catch (Exception ex){throw new Exception(ex.InnerException.Message, new Exception(ex.InnerException.StackTrace));}}private static string GetWsClassName(string wsUrl){string[] parts = wsUrl.Split('/');string[] pps = parts[parts.Length - 1].Split('.');return pps[0];}}

转载于:https://www.cnblogs.com/XuPengLB/p/9262808.html

动态调用WebService相关推荐

  1. C# 动态调用WebService

    Reference from : http://blog.csdn.net/chuxiamuxiang/article/details/5731988 在C#程序中,若要调用WebService,一般 ...

  2. C# 动态调用webservice代码

    /// <summary> /// 动态调用WebService /// </summary> /// <param name="url">UR ...

  3. 动态调用WebService方法

    C#动态调用WebService object item = InvokeWebService(this._webServicesUrl, "HelloWorld", new ob ...

  4. 使用AOP动态调用WebService

    在网上搜了一下"动态调用WebService"相信都能搜出上千篇文章,但是都出自同一个版本:使用ServiceDescriptionImporter导入wsdl然后进行动态编译,再 ...

  5. 动态调用Webservice 支持Soapheader身份验证(转)

    封装的WebserviceHelp类: using System; using System.CodeDom; using System.CodeDom.Compiler; using System. ...

  6. vue 调用webservice_用C#通过反射实现动态调用WebService 告别Web引用(转载)

    我们都知道,调用WebService可以在工程中对WebService地址进行WEB引用,但是这确实很不方便.我想能够利用配置文件灵活调用WebService.如何实现呢? 用C#通过反射实现动态调用 ...

  7. vue 调用webservice_动态调用WebService接口的几种方式

    一.什么是WebService? 这里就不再赘述了,想要了解的====>传送门 二.为什么要动态调用WebService接口? 一般在C#开发中调用webService服务中的接口都是通过引用过 ...

  8. Silverlight 动态调用 WebService

    1. 配置 IIS 绑定 IP地址 2. 在 SL 中引用 WebService 3. 在需要调用 WebService 的地方写下列代码: WCF : WCF  BasicHttpBinding b ...

  9. .NET动态调用WebService

    这不是一篇教你了解WebService的博文,也不是对WebService的深入理解, 这是一篇教你在开发过程中,如果动态的调用WebService一个方法. 在比较常见的WebService调用,我 ...

最新文章

  1. 不走寻常路 设计ASP.NET应用程序的七大绝招
  2. 桥接模式(Bridge)
  3. 中国交通标志识别,德国交通标志识别
  4. 台湾大学林轩田机器学习基石课程学习笔记10 -- Logistic Regression
  5. 【刷题】BZOJ 2125 最短路
  6. LAMP平台架构浅析
  7. mysql 从 a表updateb表_mysql A表自动更新和插入B表的数据
  8. Codeforces Round #372 (Div. 1) B. Complete The Graph
  9. 【答题卡识别】基于matlab Hough变换答题卡识别【含Matlab源码 250期】
  10. 面试题之说几个Object类常用方法以及作用
  11. html整体布局居中,div整体位置居中
  12. android 设置壁纸上下显示不全,默认锁屏壁纸及锁屏壁纸被拉伸显示不全的问题...
  13. 我就发布个夏泽网注册码
  14. 铁流:苹果为何不找IBM,而选择中国浪潮
  15. DeepNet :Scaling Transformers to 1000 Layer
  16. python爬取评论_Python爬取豆瓣《复仇者联盟3》评论并生成乖萌的格鲁特
  17. 标品和非标品如何选品,选品的重要性,店铺怎样布局
  18. iwebsec靶场搭建
  19. hdoj 2036 改革春风吹满地 (多边形面积)
  20. 小米笔记本pro重装系统和问题汇总

热门文章

  1. vue+vue-router+vuex实战
  2. springmvc 配置多个数据源,并动态切换
  3. activiti 表——介绍
  4. java编程思想第四版第十章总结
  5. winhex使用经验
  6. android之多媒体篇(二)
  7. 从客户端中检测到有潜在危险的 Request.Form 值
  8. SQL Server几个常用Date函数(二)
  9. C# Socket 入门5 UPD 结构体 与 C++ 通信
  10. oracle 远程exp导出,EXP远程导出完整Oracle数据库