zoukankan      html  css  js  c++  java
  • 动态调用WebService

    public class ServiceProxy {
    
    		#region InvokeWebService
    		[SecurityPermissionAttribute(SecurityAction.Demand, Unrestricted = true)]
    		internal static object CallWebService(string webServiceAsmxUrl, string serviceName, string methodName, object[] args) {
    
    			var client = new WebClient();
    
    			// Connect To the web service
    			var stream = client.OpenRead(webServiceAsmxUrl + "?wsdl");
    			if (stream == null) return null;
    			// Now read the WSDL file describing a service.
    			var description = ServiceDescription.Read(stream);
    
    			///// LOAD THE DOM /////////
    			// Initialize a service description importer.
    			var importer = new ServiceDescriptionImporter {ProtocolName = "Soap12"};
    
    			importer.AddServiceDescription(description, null, null);
    
    			// Generate a proxy client.
    			importer.Style = ServiceDescriptionImportStyle.Client;
    
    			// Generate properties to represent primitive values.
    			importer.CodeGenerationOptions = System.Xml.Serialization.CodeGenerationOptions.GenerateProperties;
    
    			// Initialize a Code-DOM tree into which we will import the service.
    			var nmspace = new CodeNamespace();
    
    			var unit1 = new CodeCompileUnit();
    
    			unit1.Namespaces.Add(nmspace);
    
    			// Import the service into the Code-DOM tree. This creates proxy code that uses the service.
    			ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit1);
    
    			if (warning == 0) // If zero then we are good to go
    
    {
    
    				// Generate the proxy code
    				CodeDomProvider provider1 = CodeDomProvider.CreateProvider("CSharp");
    
    				// Compile the assembly proxy with the appropriate references
    				var assemblyReferences = new string[5] { "System.dll", "System.Web.Services.dll", "System.Web.dll", "System.Xml.dll", "System.Data.dll" };
    
    				var parms = new CompilerParameters(assemblyReferences);
    
    				var results = provider1.CompileAssemblyFromDom(parms, unit1);
    
    				// Check For Errors
    
    				if (results.Errors.Count > 0) {
    
    					foreach (CompilerError oops in results.Errors) {
    
    						System.Diagnostics.Debug.WriteLine("========Compiler error============");
    
    						System.Diagnostics.Debug.WriteLine(oops.ErrorText);
    
    					}
    
    					throw new System.Exception("Compile Error Occured calling webservice. Check Debug ouput window.");
    
    				}
    
    				// Finally, Invoke the web service method
    				var wsvcClass = results.CompiledAssembly.CreateInstance(serviceName);
    				if (wsvcClass == null) return null;
    				var mi = wsvcClass.GetType().GetMethod(methodName);
    
    				return mi.Invoke(wsvcClass, args);
    
    			}
    
    			else {
    
    				return null;
    
    			}
    
    		}
    		#endregion
    
    		public static object CallWebService(string webServiceAsmxUrl, string serviceName)
    		{
    			throw new System.NotImplementedException();
    		}
    	}
    
     

      

                //调用
                var url = "www.myweb.com/service1.asmx";
                var args = new object[2];
                args[0] = "参数1";
                args[1] = "参数2";
    
                var result = ServiceProxy.CallWebService(url,"服务名称", "方法名称", args);
                
                return result.ToString() ;//Web服务中方法的返回值

      

  • 相关阅读:
    移动平台的meta标签-----神奇的功效
    JAVA工程命名规范
    linux 查看tomcat 实时日志
    linux 配置全局jdk环境
    AJAX 前后端交互 验证信息是否正确
    数据库更新DATE类型的时间
    jq 克隆 移除table
    eclipse 安装javaEE插件 和htmlxmljsp编辑器
    oracle 正序 逆序 排序查询
    JQ遍历 input 并修改name属性
  • 原文地址:https://www.cnblogs.com/habin/p/3567046.html
Copyright © 2011-2022 走看看