C 動態呼叫WebService

2021-09-06 16:28:12 字數 4311 閱讀 5048

原文:

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...