C#动态调用WebService

object item = InvokeWebService(this._webServicesUrl, "HelloWorld", new object[] { "参数" });

public static object InvokeWebService(string url, string methodname, object[] args){return InvokeWebService(url, null, methodname, args);}public static object InvokeWebService(string url, string classname, string methodname, object[] args){string @namespace = "ServiceBase.WebService.DynamicWebLoad";if (classname == null || classname == ""){classname = GetClassName(url.Replace("?wsdl", ""));}//获取服务描述语言(WSDL)WebClient wc = new WebClient();Stream stream = wc.OpenRead(url);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);Microsoft.CSharp.CSharpCodeProvider csc = new Microsoft.CSharp.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 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);System.Reflection.MethodInfo mt = t.GetMethod("set_Url");mt.Invoke(obj, new object[] { url });object result;try{result = mi.Invoke(obj, args);}catch (Exception ex){result = ex.InnerException;}return result;}private static string GetClassName(string url){string[] parts = url.Split('/');string[] pps = parts[parts.Length - 1].Split('.');return pps[0];}

View Code

以上为网上参考,谢谢

转载于:https://www.cnblogs.com/jeffqing/p/3489145.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. 使用AOP动态调用WebService

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

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

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

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

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

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

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

  7. 通过.NET反射动态调用SetValue方法给属性PropertyInfo动态类型赋值

    注意:若不动态转换属性的值,简单调用SetValue方法赋值经常出错!特别是日期类型.带符号的数字类型等. 解决方案: 通过TypeDescriptor.GetConverter方法获取对应数值类型的 ...

  8. 动态调用WebService

    public class WebServiceHelper{//动态调用web服务public static object InvokeWebService(string url, string me ...

  9. .NET动态调用WebService

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

最新文章

  1. 【Linux】【服务器】 CentOS7下远程访问mysql数据库_创建用户及授予权限_查看用户、修改密码详细步骤
  2. 使脚本和CSS在IE8中兼容
  3. iphone投屏_iPhone投屏电视机/投影仪用这个方法很简单,媲美华为PC模式
  4. PHP_Smarty
  5. Tensoflow-SSD代码解读(github-balancap代码)
  6. srsLTE源码学习:NAS非接入层、PDCP分组数据汇聚协议、PDU 协议数据单元 头文件
  7. 笨方法学python(本文为阅读时从此书摘录的笔记) 第四天
  8. Python进阶(六)文件操作
  9. [POI2001] 和平委员会 Peaceful Commission——2-sat(dfs构造字典序最小解)
  10. 【小程序】rpx(responsive pixel)自适应像素浅析
  11. python自由落体_Javascript摸拟自由落体与上抛运动原理与实现方法详解
  12. 二分以及编程过程中求中点各种写法思想解析以及完美写法
  13. 云手机虚拟机服务器配置,云手机虚拟机服务器
  14. excel文档查询服务器,excel服务器数据库查询语句
  15. 谢惠民恽自求易法槐钱定边数学分析习题课讲义第2版上册全部思考题练习题参考题解答...
  16. 破解某网课的m3u8文件的key加密
  17. 深度学习初学者必须知道的25个专业名词
  18. 删除记录中的某个字段的值
  19. 别再花时间统计考勤数据了,这个报表统计神器才是你最后出路
  20. java 音频 二进制互转,Java/Android 二进制数据与String互转

热门文章

  1. Lazy FP状态还原漏洞公布,大多数Intel的酷睿CPU受其影响
  2. Android笔记:Eclipse中SVN插件的两种安装方式
  3. tkinter之事件绑定
  4. Redis、Memcache和MongoDB的区别
  5. java常见面试题及答案 11-20(JVM篇)
  6. Android IOS WebRTC 音视频开发总结(四二)-- webrtc开发者大会
  7. yii blog页面不能正确显示js,css文件的原因分析
  8. linux03-用户与组
  9. 昌平房价已降至6500元每一平米
  10. 在docker中安装RabbitMQ