Alekin

叮叮当当、久炼成钢;太平将近、我往西方

博客园 首页 新随笔 联系 订阅 管理
        public static  object InvokeWebservice(string url, string @namespacestring 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));            
                return null;
            }

        }

别处调用   object o=Call.InvokeWebservice(Url,"CarsManage.Chanel.Transfer","Transfer","InsertDataReport",new object[]{ds,UnitName,CalTime});
posted on 2005-03-23 09:44  loveabel  阅读(527)  评论(0)    收藏  举报