fsdfasfsa

时间:2022-02-23 13:11:07

http://www.cnblogs.com/daniel206/archive/2008/01/16/1041729.html

using System.IO;
using System.Net;
using System.Reflection;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Web.Services;
using System.Web.Services.Description;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
using System;

namespace OGC_Addin.Class
{
    public class Soap
    {
        public Soap()
        { }
        public bool ApproveTestReportByHHX(int testReportId, string UId, ref string msg)
        {
            // 1. 使用 WebClient 下载 WSDL 信息。
            WebClient web = new WebClient();

Stream stream = web.OpenRead("http://localhost:60436/Learn.WEB/WebService.asmx?WSDL");
            // 2. 创建和格式化 WSDL 文档。
            ServiceDescription description = ServiceDescription.Read(stream);
            // 3. 创建客户端代理代理类。
            ServiceDescriptionImporter importer = new ServiceDescriptionImporter();

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

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

// 4. 使用 CodeDom 编译客户端代理类。
            CodeNamespace nmspace = new CodeNamespace(); // 为代理类添加命名空间,缺省为全局空间。
            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.GenerateInMemory = true;
            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);

object [] pararry=new object[3];
            pararry[0]=testReportId;
            pararry[1]=UId;
            pararry[2]=msg;

// 5. 使用 Reflection 调用 WebService。
            if (!result.Errors.HasErrors)
            {
                Assembly asm = result.CompiledAssembly;
                Type t = asm.GetType("WebService"); // 如果在前面为代理类添加了命名空间,此处需要将命名空间添加到类型前面。

object o = Activator.CreateInstance(t);
                MethodInfo method = t.GetMethod("ApproveTestReportByHHX");
                if ((bool)method.Invoke(o, pararry)) return true; else return false;
            }
            return true;
        }
    }
}

fsdfasfsa的更多相关文章

    随机推荐

    1. EntityFramework 7 Join Count LongCount 奇怪问题

      先吐槽一下,EF7 目前来说,真对的起现在的版本命名:"EntityFramework": "7.0.0-beta1". 这篇博文纪录一下:当 Linq 查询中 ...

    2. Codeforces Round #370 (Div. 2) E. Memory and Casinos 线段树

      E. Memory and Casinos 题目连接: http://codeforces.com/contest/712/problem/E Description There are n casi ...

    3. java的nio之:java的nio系列教程之SocketChannel

      Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道.可以通过以下2种方式创建SocketChannel: 打开一个SocketChannel并连接到互联网上的某台服务器. ...

    4. Application 可以存储全局变量

      Application.Lock(); Application["Name"]="小亮" Application.UnLock(); Response.Writ ...

    5. 'ManyRelatedManager' object is not iterable

      先看下面的代码: class Worker(models.Model): departments = moels.ManyToManyField(Department, verbose_name=u& ...

    6. 基于Visual C++2013拆解世界五百强面试题--题15-递归相加

      有一分数序列: 1/2 , 1/4 , 1/6 , 1/8 ......,用递归的方法,求此数列20项之和. 可以看出规律:每一项位1/n*2 这个很容易些递归,但是要注意一点,使用浮点数相除保存: ...

    7. c# 抽象类,抽象方法使用(abstract)

      入行一年多,在这个IT行业,开发技术主要使用的是.NET,而对应使用的高级语言自然就是c#了.从2017年7月入职后,在平时的工作过程中,只记得使用一些方法去完成逻辑功能,而很少去深究一些语法特性,特 ...

    8. [Leetcode]237. Delete Node in a Linked List -David_Lin

      Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...

    9. 五分钟快速掌握RPC原理及实现

      随着公司规模的不断扩大,以及业务量的激增,单体应用逐步演化为服务/微服务的架构模式, 服务之间的调用大多采用rpc的方式调用,或者消息队列的方式进行解耦.几乎每个大厂都会创建自己的rpc框架,或者基于 ...

    10. Hibernate 单向一对多映射

      单向 n-1: 单向 n-1 关联只需从 n 的一段访问 1 的一端 此处 Order 类和 Customer 类,其中 Order 类需要引用 Customer 类 代码: public class ...

    相关文章