動態呼叫WebService 原創 整理

2021-05-24 01:26:37 字數 1977 閱讀 5426

動態呼叫webservice 類

using system;

using system.collections.generic;

using system.text;

using system.web.services.description;

using system.xml.serialization;

using system.net;

using system.codedom;

using system.codedom.compiler;

using system.reflection;

using system.io;

servicedescriptionimportwarnings warning = importer.import(nmspace, unit);

codedomprovider provider = codedomprovider.createprovider("csharp");

compilerparameters parameter = new compilerparameters();

parameter.generateexecutable = false;

//輸出程式集的名稱,在配置檔案中配置

string outdllname = configmanager.getvalue("outdllname");

parameter.outputassembly = outdllname;

parameter.referencedassemblies.add("system.dll");

parameter.referencedassemblies.add("system.xml.dll");

parameter.referencedassemblies.add("system.web.services.dll");

parameter.referencedassemblies.add("system.data.dll");

compilerresults result = provider.compileassemblyfromdom(parameter, unit);

if (result.errors.haserrors)

//載入前面生成的程式集

assembly asm = assembly.loadfrom(outdllname);

string webserviceclassname = configmanager.getvalue("webserviceclassname");

type typeobj = asm.gettype(webserviceclassname);

object obj = activator.createinstance(typeobj);

int count = msginfos.length;

object objparams = new object[count];

int i = 0;

foreach (string str in msginfos)

/// 從配置檔案獲取方法名稱

string methodname = configmanager.getvalue("webservicemethodname");

object objresult = typeobj.invokemember(methodname, bindingflags.default | bindingflags.invokemethod, null, obj, objparams);

if (objresult == null)

log.log("呼叫失敗");

log.log("呼叫成功" + objresult.tostring());

return objresult;

}catch (exception ex)

return null;}}

}配置檔案

動態呼叫WebService

public static object invokewebservice string url,string methodname,object args 其中,url是web服務的位址,methodname是要呼叫服務方法名,args是要呼叫web服務所需的引數,返回值就是web服務返回的結果了...

動態呼叫webservice

protected string testservice string strurl,string methodname assembly asm assembly.loadfrom mytest.dll 載入前面生成的程式集 type t asm.gettype testwebservice.se...

動態呼叫WebService

1.大多數情況下,我們都是在vs裡面通過新增web引用的方式,在客戶端自動生成客戶端 去呼叫webservice的,有時候,伺服器端的位址可能會經常變,這裡就需要動態的呼叫webservice,一種是服務沒有變化只是ip位址變化了,這樣我們只需要在獲取客戶端 的時候,將其url位址修改即可。2.建立...