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

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

動(dòng)態(tài)引用WebService,建立WebService虛擬機(jī)

2024-07-21 02:21:18
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
建立webservice虛擬代理,使用xml登記webservice的引用地址。實(shí)現(xiàn)動(dòng)態(tài)引用webservice.

使用技術(shù)
1、 動(dòng)態(tài)編譯

2、 反射技術(shù)

實(shí)現(xiàn)代碼
using system;

using system.reflection ;

using system.web .services .description ;

using microsoft.csharp;

using system.codedom ;

using system.codedom.compiler ;

using system.io ;

using system.text ;

using system.xml ;

using system.net ;

using webserviceproxy;

namespace webserviceproxy

{



public class webserviceproxy

{

private assembly _ass = null;



private string _protocolname = "soap";

private string _srcwsproxy = string.empty;



public assembly assembly { get{ return _ass; } }



public string protocolname



{ get{ return _protocolname; } set {_protocolname = value; } }



public string srcwsproxy { get{ return _srcwsproxy; } }







public webserviceproxy ()



{



}



public webserviceproxy (string wsdlsourcename)



{



assemblyfromwsdl(getwsdl(wsdlsourcename));



}



public string wsdlfromurl(string url)



{



webrequest req = webrequest.create(url);



webresponse result = req.getresponse();



stream receivestream = result.getresponsestream();



encoding encode = system.text.encoding.getencoding("utf-8");



streamreader sr = new streamreader( receivestream, encode );



string strwsdl = sr.readtoend();



return strwsdl;



}



public string getwsdl(string source)

{



if(source.startswith("<?xml version") == true)



{

return source;

}

else



if(source.startswith("http://") == true)

{

return wsdlfromurl(source);

}



return wsdlfromfile(source);

}

public string wsdlfromfile(string filefullpathname)

{

fileinfo fi = new fileinfo(filefullpathname);

if(fi.extension == "wsdl")

{

filestream fs = new filestream(filefullpathname, filemode.open,

fileaccess.read);

streamreader sr = new streamreader(fs);

char[] buffer = new char[(int)fs.length];

sr.readblock(buffer, 0, (int)fs.length);

return new string(buffer);

}



throw new exception("this is no a wsdl file");

}



public assembly assemblyfromwsdl(string strwsdl)

{

// xml text reader

stringreader wsdlstringreader = new stringreader(strwsdl);

xmltextreader tr = new xmltextreader(wsdlstringreader);

servicedescription sd = servicedescription.read(tr);

tr.close();



// wsdl service description importer

codenamespace cns = new codenamespace("webserviceproxy.webserviceaccessor");

servicedescriptionimporter sdi = new servicedescriptionimporter();

sdi.addservicedescription(sd, null, null);

sdi.protocolname = _protocolname;

sdi.import(cns, null);



// source code generation

csharpcodeprovider cscp = new csharpcodeprovider();

icodegenerator icg = cscp.creategenerator();

stringbuilder srcstringbuilder = new stringbuilder();

stringwriter sw = new stringwriter(srcstringbuilder);

icg.generatecodefromnamespace(cns, sw, null);

_srcwsproxy = srcstringbuilder.tostring();

sw.close();



// assembly compilation.

compilerparameters cp = new compilerparameters();

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

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

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

cp.generateexecutable = false;

cp.generateinmemory = true;

cp.includedebuginformation = false;

icodecompiler icc = cscp.createcompiler();

compilerresults cr = icc.compileassemblyfromsource(cp, _srcwsproxy);

if(cr.errors.count > 0)

throw new exception(string.format("build failed: {0} errors",

cr.errors.count));



return _ass = cr.compiledassembly;

}





public object createinstance(string objtypename)

{

type t = _ass.gettype("webserviceproxy.webserviceaccessor" + "." + objtypename);

return activator.createinstance(t);

}





public object invoke(object obj, string methodname, params object[] args)

{

methodinfo mi = obj.gettype().getmethod(methodname);

return mi.invoke(obj, args);

}

}



}

  • 本文來(lái)源于網(wǎng)頁(yè)設(shè)計(jì)愛(ài)好者web開(kāi)發(fā)社區(qū)http://www.html.org.cn收集整理,歡迎訪問(wèn)。
  • 發(fā)表評(píng)論 共有條評(píng)論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 乐陵市| 陵水| 西平县| 淅川县| 乌拉特中旗| 封丘县| 仙桃市| 锡林郭勒盟| 屯门区| 莱阳市| 得荣县| 永川市| 浏阳市| 上高县| 浮梁县| 浪卡子县| 桓台县| 宁国市| 枣阳市| 福建省| 贡觉县| 北辰区| 赤壁市| 清水河县| 武胜县| 巩义市| 夏河县| 磴口县| 洮南市| 文昌市| 施秉县| 郧西县| 洛阳市| 涿鹿县| 拜城县| 新巴尔虎右旗| 镇巴县| 桦川县| 肥乡县| 澜沧| 庆城县|