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" });

  • 相关阅读:
    LeetCode#1047-Remove All Adjacent Duplicates In String-删除字符串中的所有相邻重复项
    LeetCode#345-Reverse Vowels of a String-反转字符串中的元音字母
    LeetCode#344-Reverse String-反转字符串
    LeetCode#232-Implement Queue using Stacks-用栈实现队列
    LeetCode#225-Implement Stack using Queues-用队列实现栈
    LeetCode#20-Valid Parentheses-有效的括号
    树的遍历
    [leetcode] 树(Ⅰ)
    二叉树图形化显示
    你错在成长于文明的边陲
  • 原文地址:https://www.cnblogs.com/wonder315/p/4325450.html
Copyright © 2011-2022 走看看