动态调用WebService方法
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方法相关推荐
- C# 动态调用WebService
Reference from : http://blog.csdn.net/chuxiamuxiang/article/details/5731988 在C#程序中,若要调用WebService,一般 ...
- C# 动态调用webservice代码
/// <summary> /// 动态调用WebService /// </summary> /// <param name="url">UR ...
- 使用AOP动态调用WebService
在网上搜了一下"动态调用WebService"相信都能搜出上千篇文章,但是都出自同一个版本:使用ServiceDescriptionImporter导入wsdl然后进行动态编译,再 ...
- 动态调用Webservice 支持Soapheader身份验证(转)
封装的WebserviceHelp类: using System; using System.CodeDom; using System.CodeDom.Compiler; using System. ...
- vue 调用webservice_用C#通过反射实现动态调用WebService 告别Web引用(转载)
我们都知道,调用WebService可以在工程中对WebService地址进行WEB引用,但是这确实很不方便.我想能够利用配置文件灵活调用WebService.如何实现呢? 用C#通过反射实现动态调用 ...
- vue 调用webservice_动态调用WebService接口的几种方式
一.什么是WebService? 这里就不再赘述了,想要了解的====>传送门 二.为什么要动态调用WebService接口? 一般在C#开发中调用webService服务中的接口都是通过引用过 ...
- 通过.NET反射动态调用SetValue方法给属性PropertyInfo动态类型赋值
注意:若不动态转换属性的值,简单调用SetValue方法赋值经常出错!特别是日期类型.带符号的数字类型等. 解决方案: 通过TypeDescriptor.GetConverter方法获取对应数值类型的 ...
- 动态调用WebService
public class WebServiceHelper{//动态调用web服务public static object InvokeWebService(string url, string me ...
- .NET动态调用WebService
这不是一篇教你了解WebService的博文,也不是对WebService的深入理解, 这是一篇教你在开发过程中,如果动态的调用WebService一个方法. 在比较常见的WebService调用,我 ...
最新文章
- 【Linux】【服务器】 CentOS7下远程访问mysql数据库_创建用户及授予权限_查看用户、修改密码详细步骤
- 使脚本和CSS在IE8中兼容
- iphone投屏_iPhone投屏电视机/投影仪用这个方法很简单,媲美华为PC模式
- PHP_Smarty
- Tensoflow-SSD代码解读(github-balancap代码)
- srsLTE源码学习:NAS非接入层、PDCP分组数据汇聚协议、PDU 协议数据单元 头文件
- 笨方法学python(本文为阅读时从此书摘录的笔记) 第四天
- Python进阶(六)文件操作
- [POI2001] 和平委员会 Peaceful Commission——2-sat(dfs构造字典序最小解)
- 【小程序】rpx(responsive pixel)自适应像素浅析
- python自由落体_Javascript摸拟自由落体与上抛运动原理与实现方法详解
- 二分以及编程过程中求中点各种写法思想解析以及完美写法
- 云手机虚拟机服务器配置,云手机虚拟机服务器
- excel文档查询服务器,excel服务器数据库查询语句
- 谢惠民恽自求易法槐钱定边数学分析习题课讲义第2版上册全部思考题练习题参考题解答...
- 破解某网课的m3u8文件的key加密
- 深度学习初学者必须知道的25个专业名词
- 删除记录中的某个字段的值
- 别再花时间统计考勤数据了,这个报表统计神器才是你最后出路
- java 音频 二进制互转,Java/Android 二进制数据与String互转