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

    封装的通用方法:

     1     using System;  
     2     using System.Collections.Generic;  
     3     using System.Text;  
     4     using System.Xml;  
     5     using System.Net;  
     6     using System.Web.Services.Description;  
     7     using System.CodeDom;  
     8     using System.CodeDom.Compiler;  
     9     using System.Reflection;  
    10     namespace WindowsServiceWebDefaultHotCity  
    11     {  
    12         /// <summary<   
    13         /// WebService代理类   
    14         /// </summary<   
    15         public class WebServiceAgent  
    16         {  
    17             private object agent;  
    18             private Type agentType;  
    19             private const string CODE_NAMESPACE = "Beyondbit.WebServiceAgent.Dynamic";  
    20             /// <summary<   
    21             /// 构造函数   
    22             /// </summary<   
    23             /// <param name="url"<</param<   
    24             public WebServiceAgent(string url)  
    25             {  
    26                 XmlTextReader reader = new XmlTextReader(url + "?wsdl");  
    27       
    28                 //创建和格式化 WSDL 文档   
    29                 ServiceDescription sd = ServiceDescription.Read(reader);  
    30       
    31                 //创建客户端代理代理类   
    32                 ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();  
    33                 sdi.AddServiceDescription(sd, null, null);  
    34       
    35                 //使用 CodeDom 编译客户端代理类   
    36                 CodeNamespace cn = new CodeNamespace(CODE_NAMESPACE);  
    37                 CodeCompileUnit ccu = new CodeCompileUnit();  
    38                 ccu.Namespaces.Add(cn);  
    39                 sdi.Import(cn, ccu);  
    40                 Microsoft.CSharp.CSharpCodeProvider icc = new Microsoft.CSharp.CSharpCodeProvider();  
    41                 CompilerParameters cp = new CompilerParameters();  
    42                 CompilerResults cr = icc.CompileAssemblyFromDom(cp, ccu);  
    43                 agentType = cr.CompiledAssembly.GetTypes()[0];  
    44                 agent = Activator.CreateInstance(agentType);  
    45             }  
    46       
    47             ///<summary<   
    48             ///调用指定的方法   
    49             ///</summary<   
    50             ///<param name="methodName"<方法名,大小写敏感</param<   
    51             ///<param name="args"<参数,按照参数顺序赋值</param<   
    52             ///<returns<Web服务的返回值</returns<   
    53             public object Invoke(string methodName, params object[] args)  
    54             {  
    55                 MethodInfo mi = agentType.GetMethod(methodName);  
    56                 return this.Invoke(mi, args);  
    57             }  
    58             ///<summary<   
    59             ///调用指定方法   
    60             ///</summary<   
    61             ///<param name="method"<方法信息</param<   
    62             ///<param name="args"<参数,按照参数顺序赋值</param<   
    63             ///<returns<Web服务的返回值</returns<   
    64             public object Invoke(MethodInfo method, params object[] args)  
    65             {  
    66                 return method.Invoke(agent, args);  
    67             }  
    68             public MethodInfo[] Methods  
    69             {  
    70                 get  
    71                 {  
    72                     return agentType.GetMethods();  
    73                 }  
    74             }  
    75         }  
    76     }  

    调用方法:

                string _url = "http://localhost:26711/Index.asmx";
                TCMDSS_DEMO.Common.WebServiceAgent agent = new TCMDSS_DEMO.Common.WebServiceAgent(_url);
                object[] args = new object[3];
                args[0] = "GetProductRegister";
                args[1] = "037055098037050050083101114105097108078111037050050037051097037050050051050051049050037050050037055100";
                args[2] = "";
                string text = agent.Invoke("CallCenter", args).ToString();
                MessageBox.Show(text);
  • 相关阅读:
    python学习笔记(unittest)
    python学习笔记(session)
    python学习笔记(requests)
    jmeter的学习(配置环境)
    Codeforces 576D. Flights for Regular Customers 题解
    Codeforces 1316F. Battalion Strength 题解
    2020年第十一届蓝桥杯省赛J-网络分析(带权并查集)
    第十一届蓝桥杯b组省赛 C.合并检测(内附详细的样例)
    蓝桥杯2020.7月真题走方格(到达终点的不同方案数)(记忆化搜索+DP)
    Codeforces Global Round 11 A. Avoiding Zero(思维构造)
  • 原文地址:https://www.cnblogs.com/garfield211/p/5825605.html
Copyright © 2011-2022 走看看