• 根据Webservice地址,动态传入参数(Webservice代理类)


    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using Sunlib;

    using System.Net;

    using System.IO;

    using System.Web.Services.Description;

    using System.CodeDom;

    using Microsoft.CSharp;

    using System.CodeDom.Compiler;

    using System.Reflection;

    public class Webservice

    {

      public static object InvokeWebService(string url , string methodName , object[] args)

      {

        string @namespace="client";

        StringBuilder sb = new StringBuilder();

        try

          {

             WebClient ws = new WebClient();

             Stream stream=ws.OpenRead(url+"?WSDL");

             ServiceDescription sd=ServiceDescription.Read(stream);

             string classname=sd.Services[0].Name;

             ServiceDescriptionImporter sdi=new ServiceDescriptionImporter();

             sdi.AddServiceDescription(sd,"","");

             CodeNamespace cn=new CodeNamespace(@namespace);

             CodeCompileUnit ccu= new CodeCompileUnit();

             ccu.Namespaces.Add(cn);

             sdi.Import(cn,ccu);

             CsharpCodeProvider csc=new CsharpCodeProvider();

             //设定编译参数

             CompilerParameters cplist=new CompilerParameters();

             cplist.GenerateExecutable=false;

             cplist.GenerateInMemory=true;

             cplist.ReferencedAssemblies.Add("System.dll");

             cplist.ReferencedAssemblies.Add("System.XML.dll");

             cplist.ReferencedAssemblies.Add("System.Web.Services.dll");

             cplist.ReferencedAssemblies.Add("System.Data.dll");

             //编译代理类

             CompilerResults cs =csc.CompileAssemblyFormDom(cplist,ccu);

             if(cs.Errors.HasErrors)

                {

                  foreach(CompilerError ce in cs.Errors)

                   {

                     sb.Append(ce.ToString()).AppendLine();

                   }

                    throw new Exception(sb.ToString());

                }

               Assembly assembly =cs.CompiledAssembly;

              Type t = assembly.GetType(@namespace+"."+classname,true,true);

              object obj =Activator.CreateInstance(t);

              MethodInfo mi=t.GetMethod(methodName);

              return mi.Invoke(obj,args);

          }

           catch(Exception e)

           {

               sb.Append(e.Message).AppendLine();

               return null;

           }  

           finally

           {

             LogHelper.WriteTxt(sb.ToString());

           } 

      }

    }

    public class UpdateData

    {

        public dynamic UpdateDatas(params string[] args)

        {

             //user用户名;pwd密码

           string result=Webservice.InvokeWebService(WebServiceURL,MethodName,new object[]{ user,pwd,args[0],args[1],args[2],args[3] }).ToString();

           //string result=Webservice.InvokeWebService(WebServiceURL,MethodName,new object[]{args }).ToString();

        }

    }

    public class synsReadData

    {

       public void ReadData()

        {

         //

         UpdateData updateData=new  UpdateData();

         dynamic rlt=updateData.UpdateDatas(userCode,meterCode,markTime,markData);

         //dynamic rlt=updateData.UpdateDatas(result.ToString());//result为json数据

         if(rlt==null)

          {

            sb.Append("WebService调用异常返回null").AppendLine();

            continue;

          }

          //返回调用结果

          string execCode=rlt.RetInfo.Code.ToString();

        }

    }

  • 相关阅读:
    flush table with read lock的轻量级解决方案
    Linux进程关系(转载)
    常用的linux系统监控命令
    MySQL 5.7 InnoDB缓冲池NUMA功能支持——但是别高兴的太早
    网站收集ing....
    【转】程序设计语言中的 一等公民,二等公民,三等公民
    sbt修改为阿里云镜像
    java 中的原始类型与原始封装类型
    【转】MySql中row_number()、rank()、dense_rank() 的区别
    WPS_word使用
  • 原文地址:https://www.cnblogs.com/huodige/p/10538556.html
Copyright © 2020-2023  润新知