zoukankan      html  css  js  c++  java
  • 【整理】动态加载Web Services

    WebClient client = new WebClient();
    String url = "http://localhost/MESAPIWebService/MESAPI.asmx?WSDL";//这个地址可以写在Config文件里面,这里取出来就行了.在原地址后面加上: ?WSDL
    Stream stream = client.OpenRead(url);
    ServiceDescription description = ServiceDescription.Read(stream);

    ServiceDescriptionImporter importer = new ServiceDescriptionImporter();//创建客户端代理代理类。

    importer.ProtocolName = "Soap"; //指定访问协议。
    importer.Style = ServiceDescriptionImportStyle.Client; //生成客户端代理。
    importer.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync;

    importer.AddServiceDescription(description, null, null); //添加WSDL文档。

    CodeNamespace nmspace = new CodeNamespace(); //命名空间
    nmspace.Name = "MESWebService";
    CodeCompileUnit unit = new CodeCompileUnit();
    unit.Namespaces.Add(nmspace);

    ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit);
    CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");

    CompilerParameters parameter = new CompilerParameters();
    parameter.GenerateExecutable = false;
    parameter.OutputAssembly = "MyTest.dll";//输出程序集的名称
    parameter.ReferencedAssemblies.Add("System.dll");
    parameter.ReferencedAssemblies.Add("System.XML.dll");
    parameter.ReferencedAssemblies.Add("System.Web.Services.dll");
    parameter.ReferencedAssemblies.Add("System.Data.dll");

    CompilerResults result = provider.CompileAssemblyFromDom(parameter, unit);
    if (result.Errors.HasErrors)
    {
    // 显示编译错误信息
    }

    Assembly asm = Assembly.LoadFrom("MyTest.dll");//加载前面生成的程序集
    Type t = asm.GetType("MESWebService.Service");

    object o = Activator.CreateInstance(t);
    MethodInfo method = t.GetMethod("GetUserInfo");//GetPersons是服务端的方法名称,你想调用服务端的什么方法都可以在这里改,最好封装一下

    DataSet ds = (DataSet)method.Invoke(o, new object[] { "CN04633" });

  • 相关阅读:
    洛谷 P1005 矩阵取数游戏 (区间dp+高精度)
    洛谷 P1026 统计单词个数 (分组+子串预处理)(分组型dp再次总结)
    洛谷 P1052 过河 (离散化+dp)
    洛谷 P1541 乌龟棋 (四维费用背包)
    洛谷 P1736 创意吃鱼法
    矩阵旋转模板
    洛谷 P1855 榨取kkksc03 (二维费用背包)
    洛谷 P1417 烹调方案 (01背包拓展)
    关于结构体的PPT
    子进程自父进程继承什么或未继承什么
  • 原文地址:https://www.cnblogs.com/wonder315/p/4325450.html
Copyright © 2011-2022 走看看