分享
 
 
 

VS。NET 我可以说不吗?(再谈Web Service)下

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

VS。NET 我可以说不吗?(再谈Web Service)下

小气的神 2001.08.06

4. 完成对Web Service的测试之后,我们开始完成客户端的工作,生成代理包,调用这个服务。

这部分也轻车熟路了,上篇文档中的我也是手工完成的。具体分为两步:

1. 先生成一个代理类。

wsdl /out:WebServiceProxyClass.cs http://localhost/WebService1/Service1.asmx

2. 然后编译这个代理类。

csc /t:library /out:bin/MyWebServiceProxy.dll WebServiceProxyClass.cs

对于bin的目录不是必须或要求的可以在任何目录,完成这部之后,组件也自动的注册了,也就是说你可以开始调用这个Web Service了。

5. 用客户端代码进行测试。

上一篇中我只用VS。NET简单的建立了一个 ASP Form,上面放两个 Lable显示一下。其实对于客户端来说可以说多种多样的,可以是ASP,Html,dotnet的应用程序,ASP+页面,VB程序、甚至是Java或其它任何语言生成的客户端。这也真正表现了Web Service的意义,只要在Web上,你能找到这个Service,那么你就可以享受这个Service。

Html就很容易了比如:

<a href="http://localhost/WebService1/Service1.asmx/HelloWorld"> HelloWorld </a>你就可以完成测试。如果你要突出编程方式那么你可以象我上次一样用 Service1 ServiceProxy = new Service1() ;

String strReturn = ServiceProxy.HelloWorld() ; 这样的方式来获得结果。在ClientHtml.html中我展现了两种用于Web Service的协议:HTTP-GET和HTTP-POST。不过我想着重说的是CallServiceXML.asp这个文件的作法,从中你可以发现许多不同的东西,到底Web Service是通过什么来返回它提供的Service,它在干什么,结果也许你会发现很耳熟的SOAP。其实代理类是通过SOAP协议和ASP+的Web Service进行通讯。

你可以仔细考察下面的代码:

function btn_click (n1, n2)

{

var xmlObj = new ActiveXObject("Msxml2.DOMDocument") ;

var sXml = "<?xml version=\"1.0\" ?>" ;

sXml += "<soap:Envelope "

sXml += "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " ;

sXml += "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " ;

sXml += "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" ;

sXml += "<soap:Body>" ;

sXml += "<Add xmlns=\"http://tempuri.org/\">" ;

sXml = sXml + "<n1>" + n1.value + "</n1>" ;

sXml = sXml + "<n2>" + n2.value + "</n2>" ;

sXml += "</Add></soap:Body></soap:Envelope>"

xmlObj.loadXML(sXml) ;

// 完成请求的准备,手工生成一个SOAP的格式包(消息主体)

XmlRequest.innerText = xmlObj.xml ;

// 发出请求 并且得到服务器的回应。

var xmlHTTP = new ActiveXObject("Msxml2.XMLHTTP") ;

xmlHTTP.Open ( "Post", "http://localhost/WebService1/Service1.asmx", false) ;

xmlHTTP.setRequestHeader("SOAPAction", "http://tempuri.org/Add") ;

xmlHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8" ) ;

xmlHTTP.Send(xmlObj.xml) ;

MyResult.innerText = xmlHTTP.responseText ;

var xmlResponse = xmlHTTP.responseXML ;

// xmlHTTP.responseXML 中就是服务器回应的结果

answer.innerText = xmlResponse.selectSingleNode

("soap:Envelope/soap:Body/AddResponse/AddResult").text ;

看得出先构造一个SOAP的包然后把请求拿回来(selectSingleNode函数是XML

DOM中的很通用的一个函数)具体的结果可以看09CallServiceXML.jpg

好了,通过上面我们完成了一个Web Service。这是完成一个Web Service的基本框架,剩下的你可以进行扩充实现你需要的功能。在最后我们具体考察了Web Service的协议和客户端的问题,涉及到SOAP和XML的一些概念。尽管VS。NET实现Web Service很方便,但手工实现也是完全可以的,但愿看完这篇文章之后你可以对VS。NET说一次不。

最后附带整个的代码和图示。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有