国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

動態調用Webservice

2024-07-21 02:30:22
字體:
來源:轉載
供稿:網友
/// <summary>
/// 根據指定的信息,調用遠程webservice方法
/// </summary>
/// <param name="url">webservice的http形式的地址</param>
/// <param name="namespace">欲調用的webservice的命名空間</param>
/// <param name="classname">欲調用的webservice的類名(不包括命名空間前綴)</param>
/// <param name="methodname">欲調用的webservice的方法名</param>
/// <param name="args">參數列表</param>
/// <returns>webservice的執行結果</returns>
/// <remarks>
/// 如果調用失敗,將會拋出exception。請調用的時候,適當截獲異常。
/// 異常信息可能會發生在兩個地方:
/// 1、動態構造webservice的時候,compileassembly失敗。
/// 2、webservice本身執行失敗。
/// </remarks>
/// <example>
/// <code>
/// object obj = invokewebservice("http://localhost/gsp_workflowwebservice/common.asmx","genersoft.platform.service.workflow","common","gettooltype",new object[]{"1"});
/// </code>
/// </example>
private object invokewebservice(string url, string @namespace, string classname, string methodname, object[] args)
{
try
{
system.net.webclient wc = new system.net.webclient();
system.io.stream stream = wc.openread(url+"?wsdl");
system.web.services.description.servicedescription sd = system.web.services.description.servicedescription.read(stream);
system.web.services.description.servicedescriptionimporter sdi = new system.web.services.description.servicedescriptionimporter();
sdi.addservicedescription(sd,"","");
system.codedom.codenamespace cn = new system.codedom.codenamespace(@namespace);
system.codedom.codecompileunit ccu = new system.codedom.codecompileunit();
ccu.namespaces.add(cn);
sdi.import(cn,ccu);

microsoft.csharp.csharpcodeprovider csc = new microsoft.csharp.csharpcodeprovider();
system.codedom.compiler.icodecompiler icc = csc.createcompiler();

system.codedom.compiler.compilerparameters cplist = new system.codedom.compiler.compilerparameters();
cplist.generateexecutable = false;
cplist.generateinmemory = true;
cplist.referencedassemblies.add("system.dll");
cplist.referencedassemblies.add("system.xml.dll");
cplist.referencedassemblies.add("system.web.services.dll");
cplist.referencedassemblies.add("system.data.dll");

system.codedom.compiler.compilerresults cr = icc.compileassemblyfromdom(cplist, ccu);
if(true == cr.errors.haserrors)
{
system.text.stringbuilder sb = new system.text.stringbuilder();
foreach(system.codedom.compiler.compilererror ce in cr.errors)
{
sb.append(ce.tostring());
sb.append(system.environment.newline);
}
throw new exception(sb.tostring());
}
system.reflection.assembly assembly = cr.compiledassembly;
type t = assembly.gettype(@namespace+"."+classname,true,true);
object obj = activator.createinstance(t);
system.reflection.methodinfo mi = t.getmethod(methodname);
return mi.invoke(obj,args);
}
catch(exception ex)
{
throw new exception(ex.innerexception.message,new exception(ex.innerexception.stacktrace));
}
}



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 加查县| 博乐市| 盱眙县| 文昌市| 恭城| 贵定县| 略阳县| 盐城市| 襄樊市| 易门县| 射洪县| 芜湖县| 汽车| 万源市| 英德市| 阿巴嘎旗| 宁武县| 谷城县| 龙里县| 兴仁县| 望奎县| 连平县| 阿拉尔市| 章丘市| 天门市| 雅安市| 大邑县| 遂平县| 临颍县| 祁东县| 凌海市| 富裕县| 缙云县| 芜湖市| 息烽县| 辽中县| 周宁县| 平邑县| 同仁县| 文山县| 庆城县|