真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

動(dòng)態(tài)調(diào)用WebService方法

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. using System.Net; 
  6. using System.IO; 
  7. using System.CodeDom.Compiler; 
  8. using System.Reflection; 
  9. using System.Web.Services.Description; 
  10. using System.Xml.Serialization; 
  11. using System.CodeDom; 
  12.  
  13. namespace CN100.Member.Utility 
  14.     public class WebServiceHelper 
  15.     { 
  16.         private static WebServiceHelper webService = null; 
  17.  
  18.         public static WebServiceHelper Instance(string webServiceUrl, string NamSpace) 
  19.         { 
  20.             if (webService == null) 
  21.             { 
  22.                 webService = new WebServiceHelper(webServiceUrl, NamSpace); 
  23.             } 
  24.             return webService; 
  25.         } 
  26.  
  27.         private WebServiceHelper() 
  28.         {  
  29.          
  30.         } 
  31.  
  32.         ///  
  33.         /// webService地址 
  34.         ///  
  35.         public string ServerUrl 
  36.         { 
  37.             get; 
  38.             set; 
  39.         } 
  40.  
  41.         ///  
  42.         /// 調(diào)用類命名空間 
  43.         ///  
  44.         public string NameSpace 
  45.         { 
  46.             get; 
  47.             set; 
  48.         } 
  49.  
  50.         private WebServiceHelper(string webServiceUrl, string namSpace) 
  51.         { 
  52.             ServerUrl = webServiceUrl; 
  53.             NameSpace = namSpace; 
  54.         } 
  55.  
  56.         ///  
  57.         /// 生成動(dòng)態(tài)引用DLL 
  58.         ///  
  59.         ///  
  60.         public bool GenerateWebService() 
  61.         { 
  62.             WebClient client = new WebClient(); 
  63.             String url = ServerUrl + "?WSDL";//這個(gè)地址可以寫(xiě)在Config文件里面,這里取出來(lái)就行了.在原地址后面加上: ?WSDL 
  64.             Stream stream = client.OpenRead(url); 
  65.             ServiceDescription description = ServiceDescription.Read(stream); 
  66.             ServiceDescriptionImporter importer = new ServiceDescriptionImporter();//創(chuàng)建客戶端代理代理類。 
  67.             importer.ProtocolName = "Soap"; //指定訪問(wèn)協(xié)議。 
  68.             importer.Style = ServiceDescriptionImportStyle.Client; //生成客戶端代理。 
  69.             importer.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync; 
  70.             importer.AddServiceDescription(description, null, null); //添加WSDL文檔。 
  71.             CodeNamespace nmspace = new CodeNamespace(); //命名空間 
  72.             nmspace.Name = NameSpace; 
  73.             CodeCompileUnit unit = new CodeCompileUnit(); 
  74.             unit.Namespaces.Add(nmspace); 
  75.  
  76.             ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit); 
  77.             CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp"); 
  78.  
  79.             CompilerParameters parameter = new CompilerParameters(); 
  80.             parameter.GenerateExecutable = false; 
  81.             parameter.OutputAssembly = NameSpace + ".dll";//輸出程序集的名稱 
  82.             parameter.ReferencedAssemblies.Add("System.dll"); 
  83.             parameter.ReferencedAssemblies.Add("System.XML.dll"); 
  84.             parameter.ReferencedAssemblies.Add("System.Web.Services.dll"); 
  85.             parameter.ReferencedAssemblies.Add("System.Data.dll"); 
  86.  
  87.             CompilerResults result = provider.CompileAssemblyFromDom(parameter, unit); 
  88.             if (result.Errors.HasErrors) 
  89.             { 
  90.                 // 顯示編譯錯(cuò)誤信息 
  91.                 return false; 
  92.             } 
  93.             return true; 
  94.         } 
  95.  
  96.         private Assembly LoadAssembly(string nameSpace) 
  97.         { 
  98.             Assembly asm = null; 
  99.             try 
  100.             { 
  101.                 asm=Assembly.LoadFrom(nameSpace + ".dll");//加載前面生成的程序集 
  102.             } 
  103.             catch (FileNotFoundException ex) 
  104.             { 
  105.                 if (GenerateWebService()) 
  106.                 { 
  107.                     asm=Assembly.LoadFrom(nameSpace + ".dll");//加載前面生成的程序集 
  108.                 } 
  109.             } 
  110.             catch (Exception e) 
  111.             { 
  112.                 throw e; 
  113.             } 
  114.             return asm; 
  115.         } 
  116.  
  117.         ///  
  118.         /// 執(zhí)行無(wú)返回值方法 
  119.         ///  
  120.         ///  
  121.         ///  
  122.         ///  
  123.         public void ExcuteMethod(string methodName,string nameSpace,object[] args) 
  124.         { 
  125.             Assembly asm = LoadAssembly(nameSpace); 
  126.             Type t = asm.GetType(nameSpace); 
  127.             object o = Activator.CreateInstance(t); 
  128.             MethodInfo method = t.GetMethod(methodName); 
  129.             method.Invoke(o, args); 
  130.         } 
  131.  
  132.         public void ExcuteMethod(string methodName, object[] args) 
  133.         { 
  134.             string nameSpace = NameSpace; 
  135.             ExcuteMethod(methodName, nameSpace, args); 
  136.         } 
  137.  
  138.         ///  
  139.         /// 執(zhí)行帶返回值方法 
  140.         ///  
  141.         ///  
  142.         ///  
  143.         ///  
  144.         ///  
  145.         ///  
  146.         public T ExcuteMethod(string methodName, string nameSpace, object[] args) 
  147.         { 
  148.             Assembly asm = LoadAssembly(nameSpace); 
  149.             Type t = asm.GetType(nameSpace); 
  150.             object o = Activator.CreateInstance(t); 
  151.             MethodInfo method = t.GetMethod(methodName); 
  152.             T result = (T)method.Invoke(o, args); 
  153.             return result; 
  154.         } 
  155.  
  156.         public T ExcuteMethod(string methodName, object[] args) 
  157.         { 
  158.             string nameSpace=NameSpace; 
  159.             return ExcuteMethod(methodName, nameSpace, args); 
  160.         } 
  161.  
  162.     } 

 

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信平臺(tái)小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了孝昌免費(fèi)建站歡迎大家使用!


當(dāng)前標(biāo)題:動(dòng)態(tài)調(diào)用WebService方法
文章路徑:http://weahome.cn/article/jsdpcg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部