原文:
c# 動態呼叫webservice
c#**
///
/// 動態webservice呼叫
///
/// string
public string wstest()
; string suc = (string)wsd.executequery(name, str);
return suc;
}
c#**
using system;
using system.collections;
using system.componentmodel;
using system.data;
using system.linq;
using system.web;
using system.web.services;
using system.web.services.protocols;
using system.xml.linq;
using system.io;
using system.net;
using system.codedom;
using system.codedom.compiler;
using system.web.services.description;
using system.xml.serialization;
using system.web.services.discovery;
using system.xml.schema;
using system.text;
using system.security.cryptography;
using system.reflection;
using system.collections.generic;
using system.xml;
namespace tpsvservice
";
///
/// **類型別名稱
///
private type _typename = null;
///
/// 程式集名稱
///
private string _assname = string.empty;
///
/// **類所在程式集路徑
///
private string _asspath = string.empty;
///
/// **類的例項
///
private object _instance = null;
///
/// **類的例項
///
private object instance
else
return _instance;
} }
#endregion
#region 建構函式
public webserviceproxy(string wsdlurl)
public webserviceproxy(string wsdlurl, string wsdlname)
#endregion
#region 得到wsdl資訊,生成本地**類並編譯為dll,構造函式呼叫,類生成時載入
///
/// 得到wsdl資訊,生成本地**類並編譯為dll
///
private void createserviceassembly()
if (string.isnullorempty(this._wsdlurl))
try
錯誤!", result.errors.count);
foreach (compilererror error in result.errors)
throw new exception(errors);
} this.copytempassembly(result.pathtoassembly);
this.inittypename();
} catch (exception e)
} #endregion
#region 執行web服務方法
///
/// 執行**類指定方法,有返回值
///
/// 方法名稱
/// 引數
/// object
public object executequery(string methodname, object param)
//呼叫方法
methodinfo mi = this._typename.getmethod(methodname);
if (mi == null)
try
);
//rtnobj = mi.invoke(instance, new object );
} }
catch (typeloadexception tle)
} catch (exception ex)
return rtnobj;
} ///
/// 執行**類指定方法,無返回值
///
/// 方法名稱
/// 引數
public void executenoquery(string methodname, object param)
//呼叫方法
methodinfo mi = this._typename.getmethod(methodname);
if (mi == null)
try
catch (typeloadexception tle)
} catch (exception ex)
} #endregion
#region 私有方法
///
/// 得到**類型別名稱
///
private void inittypename()
} _typename = serviceasm.gettype(this._assname + "." + objtypename);
} ///
/// 根據web service文件架構向**類新增servicedescription和xmlschema
///
/// web服務位址
/// **類
private void checkforimports(string basewsdlurl, servicedescriptionimporter importer)
} ///
/// 複製程式集到指定路徑
///
/// 程式集路徑
private void copytempassembly(string pathtoassembly)
private string ge***5sum(string str)
return sb.tostring();
} ///
/// 是否已經存在該程式集
///
/// false:不存在該程式集,true:已經存在該程式集
private bool checkcache()
return false;
} //私有方法,預設取url入口的檔名為類名
private static string getwsclassname(string wsdlurl)
#endregion
} }
C 動態呼叫WebService
使用示例 trycatch exception ex 類檔案 using system using system.web using system.xml using system.collections using system.net using system.text using system...
C 動態呼叫webservice
在做多個系統整合的時候,由於各系統廠商採用不同的架構,在專案實施前期,各業務對業務理解不夠深入,系統介面可能會有較多變化,在此背景下,動態呼叫webserivce就變得靈活了,降低了系統整合的耦合度。下面介紹動態呼叫的具體步驟 2.使用 servicedescription 建立和格式化 wsdl ...
c 動態呼叫 WebService
public class wshelper summary 動態呼叫web服務 summary param name url wsdl服務位址 param param name classname 類名 param param name methodname 方法名 param param name...