usingSystem;usingSystem.Collections.Generic;usingsystem.web;usingSystem.Net;usingSystem.IO;usingSystem.Web.Services.Description;usingsystem.codedom;usingMicrosoft.csharp;usingSystem.CodeDom.Compiler;usingSystem.Reflection;namespacedeteupdateprocess{classwebserviceget{/// < summary> ///dynamically invoking Web services/// </summary> /// < param name= "url" >WSDL Service Address</param> /// < param name= "methodname" >Method Name</param> /// < param name= "args" >Parameters</param> /// < returns></returns> Public Static ObjectInvokewebservice (stringUrlstringMethodNameObject[] args) {returnWebserviceget.invokewebservice (URL,NULL, MethodName, args);}/// < summary> ///dynamically invoking Web services/// </summary> /// < param name= "url" >WSDL Service Address</param> /// < param name= "classname" >class name</param> /// < param name= "methodname" >Method Name</param> /// < param name= "args" >Parameters</param> /// < returns></returns> Public Static ObjectInvokewebservice (stringUrlstringClassNamestringMethodNameObject[] args) {string@namespace ="EnterpriseServerBase.WebService.DynamicWebCalling";if(ClassName = =NULL) || (ClassName = ="") ) {classname=webserviceget.getwsclassname (URL);}Try{ //get WSDLWebClient 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 ICC=NewCSharpCodeProvider ();//Setting Compilation 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=NewSystem.Text.StringBuilder ();foreach(System.CodeDom.Compiler.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);//PropertyInfo PropertyInfo = type. GetProperty (PropertyName); //return propertyinfo.getvalue (obj, null);}Catch(Exception ex) {Throw NewException (ex. Innerexception.message,NewException (ex. Innerexception.stacktrace));}}Private Static stringGetwsclassname (stringWsurl) {string[] parts = Wsurl.split ('/');string[] pps = Parts[parts. Length-1]. Split ('.');returnpps[0];}}} When called:stringURL = args[0];//Server Addressstring[] Strckeck =New string[1];strckeck[0] ="8888";//Product IDstringstrupdate = Webserviceget.invokewebservice (URL,"checkupdate", Strckeck). ToString ();
Dynamic call WebService, no need to add Web References