動態呼叫WebService方法

2022-02-17 22:23:01 字數 2330 閱讀 7666

c#動態呼叫webservice 

object item = invokewebservice(this._webservicesurl, "helloworld", new object );

public

static

object invokewebservice(string url, string methodname, object

args)

public

static

object invokewebservice(string url, string classname, string methodname, object

args)

//獲取服務描述語言(wsdl)

webclient wc = new

webclient();

stream stream =wc.openread(url);

servicedescription sd =servicedescription.read(stream);

servicedescriptionimporter sdi = new

servicedescriptionimporter();

sdi.addservicedescription(sd,

"", ""

); codenamespace cn = new

codenamespace(@namespace);

//生成客戶端**類**

codecompileunit ccu = new

codecompileunit();

ccu.namespaces.add(cn);

sdi.import(cn, ccu);

microsoft.csharp.csharpcodeprovider csc = new

microsoft.csharp.csharpcodeprovider();

icodecompiler icc =csc.createcompiler();

//設定編譯器的引數

compilerparameters cplist = new

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");

//編譯**類

compilerresults cr =icc.compileassemblyfromdom(cplist, ccu);

if (true ==cr.errors.haserrors)

throw

newexception(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);

system.reflection.methodinfo mt = t.getmethod("

set_url");

mt.invoke(obj,

newobject

);

object

result;

try

catch

(exception ex)

return

result;

}private

static

string getclassname(string

url)

view code

以上為網上參考,謝謝

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