localhost.WebService ws = new localhost.WebService();
ws.Url = "new url";
ws.HelloWorld ();
- ///<summary>
- ///动态Web服务代理方法
- ///</summary>
- ///<param name="@namespace">传入空间命名</param>
- ///<param name="url">传入URL参数</param>
- ///<param name="classname">传入类名</param>
- ///<param name="methodname">传入方法名</param>
- ///<param name="args">传入参数,本参数为顺序参数</param>
- public object InvokeWebservice(string url, string @namespace, string classname, string methodname, object[] args)
- {
- try
- {
- System.Net.WebClient wc = new System.Net.WebClient();
- System.IO.Stream stream = wc.OpenRead(url + "?WSDL");
- System.Web.Services.Description.ServiceDescription sd = System.Web.Services.Description.ServiceDescription.Read(stream);
- System.Web.Services.Description.ServiceDescriptionImporter sdi = new System.Web.Services.Description.ServiceDescriptionImporter();
- sdi.AddServiceDescription(sd, "", "");
- System.CodeDom.CodeNamespace cn = new System.CodeDom.CodeNamespace(@namespace);
- System.CodeDom.CodeCompileUnit ccu = new System.CodeDom.CodeCompileUnit();
- ccu.Namespaces.Add(cn);
- sdi.Import(cn, ccu);
- Microsoft.CSharp.CSharpCodeProvider csc = new Microsoft.CSharp.CSharpCodeProvider();
- System.CodeDom.Compiler.ICodeCompiler icc = csc.CreateCompiler();
- System.CodeDom.Compiler.CompilerParameters cplist = new System.CodeDom.Compiler.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");
- System.CodeDom.Compiler.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));
- }
- }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。