Public Static classWebservicehelper {/// <summary> ///Dynamic Call WebService/// </summary> /// <param name= "url" >WebService Address</param> /// <param name= "methodname" >Method Name (module name)</param> /// <param name= "args" >parameter list</param> /// <returns>Object</returns> Public Static ObjectInvokewebservice (stringUrlstringMethodNameObject[] args) { returnInvokewebservice (URL,NULL, MethodName, args); } /// <summary> ///Dynamic Call WebService/// </summary> /// <param name= "url" >WebService Address</param> /// <param name= "classname" >class name</param> /// <param name= "methodname" >Method Name (module name)</param> /// <param name= "args" >parameter list</param> /// <returns>Object</returns> Public Static ObjectInvokewebservice (stringUrlstringClassNamestringMethodNameObject[] args) { string@namespace ="ServiceBase.WebService.DynamicWebLoad"; if(ClassName = =NULL|| ClassName = ="") {classname=webservicehelper.getclassname (URL); } //Get Service Description Language (WSDL)WebClient WC =NewWebClient (); Stream Stream= WC. OpenRead (URL +"? WSDL"); ServiceDescription SD=Servicedescription.read (stream); ServiceDescriptionImporter SDI=NewServiceDescriptionImporter (); Sdi. Addservicedescription (SD,"",""); CodeNamespace cn=NewCodeNamespace (@namespace); //Generate the client proxy class codeCodeCompileUnit CCU =NewCodeCompileUnit (); Ccu. Namespaces.add (CN); Sdi. Import (CN, CCU); CSharpCodeProvider csc=NewCSharpCodeProvider (); ICodeCompiler ICC=CSC. CreateCompiler (); //set the compiler's parametersCompilerParameters cplist =NewCompilerParameters (); 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"); //Compiling proxy classesCompilerResults CR =icc.compileassemblyfromdom (cplist, CCU); if(true==Cr. errors.haserrors) {System.Text.StringBuilder sb=NewStringBuilder (); foreach(CompilerError CEinchCr. Errors) {sb. Append (CE. ToString ()); Sb. Append (System.Environment.NewLine); } Throw NewException (sb.) ToString ()); } //build the proxy instance and call the methodSystem.Reflection.Assembly Assembly =cr.compiledassembly; Type T= assembly. GetType (@namespace +"."+ ClassName,true,true); Objectobj =activator.createinstance (t); System.Reflection.MethodInfo mi=T.getmethod (methodname); returnmi. Invoke (obj, args); } Private Static stringGetClassName (stringURL) { string[] parts = URL. Split ('/'); string[] pps = Parts[parts. Length-1]. Split ('.'); returnpps[0]; } }
Dynamic Call WebService