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

首頁 > 學院 > 開發設計 > 正文

VS。NET 我可以說不嗎?(再談Web Service)下

2019-09-10 09:07:17
字體:
來源:轉載
供稿:網友

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)

       {

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

/t        var sXml  = "<?xml version="1.0" ?>" ;

/t/t      sXml += "<soap:Envelope "

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

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

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

/t/t      sXml += "<soap:Body>" ;

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

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

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

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

/t        

/t/t  xmlObj.loadXML(sXml) ;

/t        // 完成請求的準備,手工生成一個SOAP的格式包(消息主體)

/t        XmlRequest.innerText =  xmlObj.xml  ;

/t        // 發出請求 并且得到服務器的回應。

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

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

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

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

/t        xmlHTTP.Send(xmlObj.xml) ;

/t        MyResult.innerText =  xmlHTTP.responseText ;

/t        

/t        var xmlResponse = xmlHTTP.responseXML ;

/t/t/t      // xmlHTTP.responseXML 中就是服務器回應的結果

/t        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說一次不。

最后附帶整個的代碼和圖示。

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 弥渡县| 翁牛特旗| 乌恰县| 石狮市| 屏南县| 上饶县| 治多县| 罗源县| 绥滨县| 襄城县| 拜城县| 西宁市| 禹城市| 虹口区| 南乐县| 保靖县| 湖口县| 九江县| 四平市| 兴隆县| 图木舒克市| 无极县| 比如县| 尉氏县| 仲巴县| 泉州市| 普宁市| 嵊州市| 化州市| 阿图什市| 广昌县| 肥西县| 苍山县| 紫金县| 永川市| 全南县| 吴堡县| 金秀| 萝北县| 三门县| 巩义市|