C动态调用WebService服务方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
public static Dictionary
{
get
{
if (_DicInvokeType == null)
_DicInvokeType = new Dictionary
return _DicInvokeType;
}
set { _DicInvokeType = value; }
}
///
/// 动态调用WebService
///
/// WebService地址
/// 方法名(模块名)
/// 参数列表,无参数为null
///
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地址
/// 类名
/// 方法名(模块名)
/// 参数列表
///
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);