C动态调用WebService服务方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C#动态调用WebService服务方法

调用举例:

string xmlTxt = WebServiceHelper.InvokeWebService(interFaceUrl, MethodName, Objpara).ToString();

代码:

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using ;

using System.CodeDom;

using piler;

using System.Web.Services.Description;

using Microsoft.CSharp;

namespace mon

{

public static class WebServiceHelper

{

private static Dictionary _DicInvokeType;

public static Dictionary DicInvokeType

{

get

{

if (_DicInvokeType == null)

_DicInvokeType = new Dictionary();

return _DicInvokeType;

}

set { _DicInvokeType = value; }

}

///

/// 动态调用WebService

///

/// WebService地址

/// 方法名(模块名)

/// 参数列表,无参数为null

/// object

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

{

return InvokeWebService(url, null, methodname, args);

}

public static object InvokeWebService(string url, string classname, string methodname,

params object[] args)

{

return InvokeWebService(url, "WebServer", classname, methodname, args);

}

///

/// 动态调用WebService

///

/// WebService地址

/// 类名

/// 方法名(模块名)

/// 参数列表

/// object

public static object InvokeWebService(string url, string @namespace, string classname, string methodname, params object[] args)

{

url = url.Trim();

WebInvokePar tWebInkove = new WebInvokePar();

System.Reflection.MethodInfo mi;

if (DicInvokeType.ContainsKey(url))

{

tWebInkove = DicInvokeType[url];

if (tWebInkove != null)

{

mi = tWebInkove.WebType.GetMethod(methodname);//【11】

if (mi != null)

return mi.Invoke(tWebInkove.AssInstance, args);

}

}

//string @namespace = "bank.WebService.webservice";

if (classname == null || classname == "")

{

classname = WebServiceHelper.GetClassName(url);

}

//获取服务描述语言(WSDL)

WebClient wc = new WebClient();

Stream stream = wc.OpenRead(url + "?WSDL");//【1】

ServiceDescription sd = ServiceDescription.Read(stream);//【2】

ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();//【3】

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

CodeNamespace cn = new CodeNamespace(@namespace);//【4】

//生成客户端代理类代码

CodeCompileUnit ccu = new CodeCompileUnit();//【5】

spaces.Add(cn);

sdi.Import(cn, ccu);

相关文档
最新文档