最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 動態(tài)調(diào)用WebService的示例

 更新時間:2020年11月06日 08:43:23   作者:秋荷雨翔  
這篇文章主要介紹了C# 動態(tài)調(diào)用WebService的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下

WebServiceHelper代碼:

using Microsoft.CSharp;
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Web.Services.Description;
using System.Xml.Serialization;

namespace SunCreate.HaiKang8600WebService.Utils
{
  /// <summary>
  /// 動態(tài)調(diào)用WebService
  /// </summary>
  public static class WebServiceHelper
  {
    /// <summary>
    /// 動態(tài)調(diào)用WebService
    /// </summary>
    /// <param name="url">WebService地址</param>
    /// <param name="strNamespace">命名空間</param>
    /// <param name="className">類名</param>
    /// <param name="methodName">方法名(模塊名)</param>
    /// <param name="args">參數(shù)列表</param>
    public static object InvokeWebService(string url, string strNamespace, string className, string methodName, object[] args)
    {
      try
      {
        WebClient webClient = new WebClient();
        Stream stream = webClient.OpenRead(url); //獲取服務(wù)描述語言(WSDL)

        ServiceDescription serviceDescription = ServiceDescription.Read(stream); //通過直接從 Stream實例加載 XML 來初始化ServiceDescription類的實例。
        ServiceDescriptionImporter serviceDescriptionImporter = new ServiceDescriptionImporter();
        serviceDescriptionImporter.AddServiceDescription(serviceDescription, null, null);

        //生成客戶端代理類代碼
        CodeNamespace codeNamespace = new CodeNamespace(strNamespace); //CodeNamespace表示命名空間聲明。
        CodeCompileUnit codeCompileUnit = new CodeCompileUnit();
        codeCompileUnit.Namespaces.Add(codeNamespace);
        serviceDescriptionImporter.Import(codeNamespace, codeCompileUnit);

        CSharpCodeProvider csharpCodeProvider = new CSharpCodeProvider();
        ICodeCompiler iCodeCompiler = csharpCodeProvider.CreateCompiler();//取得C#程式碼編譯器的執(zhí)行個體

        //設(shè)定編譯器的參數(shù)
        CompilerParameters compilerParameters = new CompilerParameters();//創(chuàng)建編譯器的參數(shù)實例
        compilerParameters.GenerateExecutable = false;
        compilerParameters.GenerateInMemory = true;
        compilerParameters.ReferencedAssemblies.Add("System.dll");
        compilerParameters.ReferencedAssemblies.Add("System.XML.dll");
        compilerParameters.ReferencedAssemblies.Add("System.Web.Services.dll");
        compilerParameters.ReferencedAssemblies.Add("System.Data.dll");

        //編譯代理類
        CompilerResults compilerResults = iCodeCompiler.CompileAssemblyFromDom(compilerParameters, codeCompileUnit);
        if (true == compilerResults.Errors.HasErrors)
        {
          StringBuilder sb = new StringBuilder();
          foreach (CompilerError ce in compilerResults.Errors)
          {
            sb.Append(ce.ToString());
            sb.Append(System.Environment.NewLine);
          }
          throw new Exception(sb.ToString());
        }

        //生成代理實例,并調(diào)用方法
        System.Reflection.Assembly assembly = compilerResults.CompiledAssembly;
        Type type = assembly.GetType(strNamespace + "." + className, true, true);
        object obj = Activator.CreateInstance(type);
        System.Reflection.MethodInfo methodInfo = type.GetMethod(methodName); //MethodInfo 的實例可以通過調(diào)用GetMethods或者Type對象或派生自Type的對象的GetMethod方法來獲取,還可以通過調(diào)用表示泛型方法定義的 MethodInfo 的MakeGenericMethod方法來獲取。
        return methodInfo.Invoke(obj, args);
      }
      catch (Exception ex)
      {
        LogUtil.LogError(ex, "動態(tài)調(diào)用WebService 錯誤");
        return null;
      }
    }

  }
}

使用示例:

string url = "http://172.16.36.26:8080/attachment/services/AttachmentService?wsdl";
object[] args = new object[2];
args[0] = "1";
args[1] = "1";
object str = WebServiceHelper.InvokeWebService(url, "service.webservice", "AttachmentService", "checkGrade", args);
string sstr = str.ToString();

以上就是C# 動態(tài)調(diào)用WebService的示例的詳細內(nèi)容,更多關(guān)于C# 動態(tài)調(diào)用WebService的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • c#執(zhí)行excel宏模版的方法

    c#執(zhí)行excel宏模版的方法

    這篇文章主要介紹了c#執(zhí)行excel宏模版的方法,導(dǎo)出Excel模版的代碼如下,大家參考使用吧
    2014-01-01
  • C#類中的屬性使用總結(jié)(詳解類的屬性)

    C#類中的屬性使用總結(jié)(詳解類的屬性)

    屬性是一種類的成員,它的實現(xiàn)類似函數(shù),訪問類似字段。它的作用是提供一種靈活和安全的機制來訪問,修改私有字段。所以屬性必須依賴于字段
    2014-03-03
  • C# WPF自制白板工具

    C# WPF自制白板工具

    著電子屏幕技術(shù)的發(fā)展,普通的黑板已不再適用現(xiàn)在的教學(xué)和演示環(huán)境,電子白板應(yīng)運而生,本文將通過C# WPF自制一個白板工具,感興趣的可以了解下
    2024-11-11
  • C#虛方法的聲明和使用實例教程

    C#虛方法的聲明和使用實例教程

    這篇文章主要介紹了C#虛方法的聲明和使用實例教程,對于初學(xué)者理解C#的虛方法有一定的幫助,需要的朋友可以參考下
    2014-07-07
  • 使用c#+IMap實現(xiàn)收取163郵件

    使用c#+IMap實現(xiàn)收取163郵件

    本文給大家推薦的是使用c#+IMap實現(xiàn)收取163郵件的具體方法和示例代碼,并附上了smtp郵箱發(fā)送郵件的代碼,有需要的小伙伴可以參考下
    2018-02-02
  • WinForm實現(xiàn)同時讓兩個窗體有激活效果的特效實例

    WinForm實現(xiàn)同時讓兩個窗體有激活效果的特效實例

    這篇文章主要介紹了WinForm實現(xiàn)同時讓兩個窗體有激活效果的特效實例,基于windows api實現(xiàn)一個窗體激活的時候給另外一個發(fā)消息的特效,在進行C#項目開發(fā)時有一定的實用價值,需要的朋友可以參考下
    2014-09-09
  • C#異步編程詳解

    C#異步編程詳解

    本文主要介紹異步編程中Task、Async和Await的基礎(chǔ)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • c# 提取文檔信息的示例

    c# 提取文檔信息的示例

    這篇文章主要介紹了c# 提取文檔信息的示例,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2021-02-02
  • C#解析json文件的實現(xiàn)代碼

    C#解析json文件的實現(xiàn)代碼

    最近需要用c#解析json文件,以前沒用過這個,百度了一下找到了這篇文章感覺不錯,特分享下
    2013-06-06
  • C#語言基礎(chǔ)——結(jié)構(gòu)體和枚舉類型全面解析

    C#語言基礎(chǔ)——結(jié)構(gòu)體和枚舉類型全面解析

    下面小編就為大家?guī)硪黄狢#語言基礎(chǔ)——結(jié)構(gòu)體和枚舉類型全面解析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07

最新評論

谢通门县| 丘北县| 鹤峰县| 项城市| 沧源| 霍邱县| 色达县| 岑巩县| 方山县| 盐城市| 弋阳县| 乌拉特中旗| 五寨县| 兴安盟| 毕节市| 许昌县| 秭归县| 南江县| 新巴尔虎左旗| 肥西县| 察隅县| 保山市| 朝阳区| 绥宁县| 台州市| 邯郸市| 正阳县| 重庆市| 光泽县| 上林县| 阿荣旗| 凭祥市| 渝北区| 舟曲县| 林甸县| 柳林县| 嫩江县| 宁南县| 黔西县| 班玛县| 卢龙县|