動態呼叫WebService以及傳遞複雜物件

2021-09-06 07:18:15 字數 2517 閱讀 9509

1.動態呼叫webservice?

解決方案:新增動態呼叫webservice類webservicehelper;**如下:

using system.collections.generic;

using system.web;

using system.net;

using system.web.services.description;

using system.text;

using system.io;

using system.codedom;

using microsoft.csharp;

using system.codedom.compiler;

/// ///webservicehelper 的摘要說明

///

public class webservicehelper

#region invokewebservice

//動態呼叫web服務

public static object invokewebservice(string url, string methodname, object args)

public static object invokewebservice(string url, string classname, string methodname, object args)

trythrow 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)

}private static string getwsclassname(string wsurl)

#endregion

}

2.呼叫webservice時,傳入引數為entity(即實體集合等複雜物件),如何傳入以及接收引數?

解決方案:第一步序列化物件

xmlserializer xs = new xmlserializer(typeof(entity));

memorystream mstream = new memorystream();

xmltextwriter writer = new xmltextwriter(mstream, encoding.default);

xs.serialize(mstream, en);

writer.close();

string str = encoding.utf8.getstring(mstream.toarray());

#endregion

#region 寫入檔案再讀取出字串

//filestream fs = new filestream("c:\\aaa.txt", filemode.openorcreate);

//xs = new xmlserializer(typeof(entity));

en);

//fs = new filestream("c:\\aaa.txt", filemode.open, fileaccess.read);

//streamreader reader = new streamreader(fs, encoding.default);

//str = reader.readtoend();

#endregion

第二步:動態呼叫webservice

第三步:webservice中的處理過程(反序列化)

[webmethod]

public bool addentity(string mapname,string strentites)

動態呼叫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.建立...