資源描述:
《C# 動(dòng)態(tài)調(diào)用Web Service》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、整理,內(nèi)容來源于網(wǎng)絡(luò)及本人實(shí)踐】前面整理了一篇關(guān)于VS2008實(shí)現(xiàn)簡(jiǎn)單的WebService的文章,但里面的調(diào)用是靜態(tài)的,當(dāng)服務(wù)地址更改后,需要重新編譯程序,對(duì)于很多應(yīng)用來說是不現(xiàn)實(shí)的。本文介紹一下C#動(dòng)態(tài)調(diào)用WebService的方法。1.實(shí)現(xiàn)寫個(gè)叫WebServiceHelper的類[csharp]viewplaincopyprint?1.namespacewebhelp2.{3.usingSystem;4.usingSystem.Net;5.usingSystem.IO;6.usingSystem.CodeDom;7.usingMicrosoft.CShar
2、p;8.usingSystem.CodeDom.Compiler;9.usingSystem.Web.Services.Description;10.usingSystem.Web.Services.Protocols;11.publicclassWebServiceHelper12.{13.#regionInvokeWebService14.15.publicstaticobjectInvokeAndCallWebService(stringurl,stringmethodname,object[]args)16.{17.returnWebServiceHelp
3、er.InvokeAndCallWebService(url,null,methodname,args);18.}19.publicstaticobjectInvokeAndCallWebService(stringurl,/*string@namespace,*/stringclassname,stringmethodname,object[]args)20.{21.string@namespace="EnterpriseServerBase.WebService.DynamicWebCalling";22.if((classname==null)
4、
5、(clas
6、sname==""))23.{1.classname=WebServiceHelper.GetWsClassName(url);2.}3.4.try5.{6.//獲取WSDL7.WebClientwebClient=newWebClient();8.Streamstream=webClient.OpenRead(url+"?WSDL");9.ServiceDescriptiondescription=ServiceDescription.Read(stream);10.ServiceDescriptionImporterdescriptionImporter=ne
7、wServiceDescriptionImporter();11.descriptionImporter.AddServiceDescription(description,"","");12.CodeNamespacecodeNamespace=newCodeNamespace(@namespace);13.14.//生成客戶端代理類代碼15.CodeCompileUnitcodeCompileUnit=newCodeCompileUnit();16.codeCompileUnit.Namespaces.Add(codeNamespace);17.descrip
8、tionImporter.Import(codeNamespace,codeCompileUnit);18.CSharpCodeProvidercodeProvider=newCSharpCodeProvider();19.20.//設(shè)定編譯參數(shù)21.CompilerParameterscompilerParameters=newCompilerParameters();22.compilerParameters.GenerateExecutable=false;23.compilerParameters.GenerateInMemory=true;24.comp
9、ilerParameters.ReferencedAssemblies.Add("System.dll");25.compilerParameters.ReferencedAssemblies.Add("System.XML.dll");26.compilerParameters.ReferencedAssemblies.Add("System.Web.Services.dll");27.compilerParameters.ReferencedAssemblies.Add("System.Data.dll");28.29.//編譯代理類30.CompilerRe
10、sults