日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

用WSDL與代理類創建可編程WEB服務

用WSDL與代理類創建可編程WEB服務

更新時間:2022-04-28 文章作者:未知 信息來源:網絡 閱讀次數:

在ASP.net中,我們可以創建WSDL文件來描述當前提供的HTML或XML或者任何其他非二進制格式)頁,可以使用WSDL來生成客戶端代理,并使用Visual Studio.NET或WSDL.exe命令行工具創建代理類。最后通過 RegEx 來分析已命名的HTML頁和提取值。以下介紹完整的實現過程:

一、為網站編寫WSDL文件

我們以訪問http://movies.yahoo.com/電影網站中“本周票房排行榜”(Top Box Office)的數據為例,檢索出票房排名第一的影片名稱。

通過查看http://movies.yahoo.com/網頁的HTML源文件,可以看到排名第一影片的鏈接是:Finding Nemo,為此可在 WSDL 的響應節中添加 標記。這些標記采用一個稱為 pattern 的屬性,這是與頁面上作為屬性值的文本部分相對應的正則表達式。這里我們創建的正規表達式是:“pattern="d=hv&cf=info&id=[0-9]*">(.*?)
<?xml version="1.0" encoding="gb2312"?>
<definitions xmlns:s="http://www.w3.org/2000/10/XMLSchema"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s0="http://tempuri.org/"
targetNamespace="http://tempuri.org/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:msType="http://microsoft.com/wsdl/mime/textMatching/">
<types/>
<message name="GetBookDetailsHttpGetIn">
<part name="isbn" type="s:string"/>
</message>
<message name="GetBookDetailsHttpGetOut"/>
<portType name="BarnesAndNobleHttpGet">
<operation name="GetBookDetails">
<input message="s0:GetBookDetailsHttpGetIn"/>
<output message="s0:GetBookDetailsHttpGetOut"/>
</operation>
</portType>
<binding name="BarnesAndNobleHttpGet" type="s0:BarnesAndNobleHttpGet">
<http:binding verb="GET"/>
<operation name="GetBookDetails">
<http:operation location=""/>
<input>
<http:urlEncoded/>
</input>
<output>
<msType:text>
<msType:match name="Rank" pattern="d=hv&cf=info&id=[0-9]*">(.*?)
</"ignoreCase="true"/>
</msType:text>
</output>
</operation>
</binding>
<service name="BarnesAndNoble">
<port name="BarnesAndNobleHttpGet" binding="s0:BarnesAndNobleHttpGet">
<http:address location="http://movies.yahoo.com/"/>
</port>
</service>
</definitions>



在上面的WSDL中,定義了BarnesAndNoble類,指定進行檢索的站點http://movies.yahoo.com/,由于是一般的通用網站,此服務不使用SOAP,而是使用HTTP GET進行請求。

二、構建WEB服務代理

在Visual Studio.NET中,右鍵單擊“解決方案資源管理器”中的“引用”,選擇“添加WEB引用”,就可以打開“添加WEB引用”對話框,

在此對話框中,輸入剛才創建好的WSDL文件所在的地址,Visual Studio.NET從指定的位置獲取WSDL并驗證它。單擊“添加引用”按鈕,就可以將此WSDL描述的WEB服務的引用添加到當前的工程中。

通過以上操作,Visual Studio.NET在后臺自動分析WSDL,并創建了代表Web服務的代理對象,并高速緩存了WSDL的本地副本。如果WSDL內容發生變化,需要手工“更新WEB引用”。

WEB服務代理的源代碼如下:

Public Class BarnesAndNoble
Inherits System.Web.Services.Protocols.HttpGetClientProtocol
'<remarks/>
Public Sub New()
MyBase.New
Me.Url = "http://movies.yahoo.com/"
End Sub
'<remarks/>
<System.Web.Services.Protocols.HttpMethodAttribute(GetType
(System.Web.Services.Protocols.TextReturnReader), GetType
(System.Web.Services.Protocols.UrlParameterWriter))> _
Public Function GetBookDetails(ByVal isbn As String)
As GetBookDetailsMatches
Return CType(Me.Invoke("GetBookDetails", (Me.Url + ""),
New Object() {isbn}),GetBookDetailsMatches)
End Function
'<remarks/>
Public Function BeginGetBookDetails(ByVal isbn As String,
ByVal callback As System.AsyncCallback, ByVal asyncState As Object)
As System.IAsyncResult
Return Me.BeginInvoke("GetBookDetails", (Me.Url + ""),
New Object() {isbn}, callback, asyncState)
End Function
'<remarks/>
Public Function EndGetBookDetails(ByVal asyncResult As System.IAsyncResult)
As GetBookDetailsMatches
Return CType(Me.EndInvoke(asyncResult),GetBookDetailsMatches)
End Function
End Class
Public Class GetBookDetailsMatches
<System.Web.Services.Protocols.MatchAttribute("d=hv&cf=info&id=[0-9]*"">
(.*?)</", lgnoreCase:=true)> _
Public Rank As String
End Class



如果在“解決方案資源管理器”中展開“Web References”部分,可以看出具體表達方式:

三、在WEB應用程序中編寫代碼,使用BarnesAndNoble Web服務。

Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
Dim bn As New localhost.BarnesAndNoble()
Dim match As localhost.GetBookDetailsMatches
match = bn.GetBookDetails("")
rank.Text = match.Rank
End Sub

在以上程序中,首先調用New localhost.BarnesAndNoble(),創建代理的一個范例bn。bn再調用GetBookDetails()方法傳入參數,最后訪回一個Rank值(排名第一的影片名稱)。

通過編寫WSDL,訪問由 WSDL 中的功能化名稱調用的 Matches 對象,就可以將任何 HTML 部分作為屬性來訪問,我們可以輕松地將WEB站點轉換為WEB服務。以上程序在Windows2000 Server、Visual Studio.NET中調試通過。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 日产福利视频在线观看 | 99精品视频在线观看re | 亚洲精品 欧美综合 在线 | 在线观看www视频 | 国产一区二区三区四区蜜芽 | 中文字幕日韩在线 | 一本到在线观看视频不卡 | 亚洲日本激情综合在线观看 | 99国产精品欧美久久久久久影院 | 国产精品久久久久久久久ktv | 91夜色视频 | 天天操夜夜操 | 日本一级一片免费 | 国产人成午夜免费看 | 久久久久久久久久久福利 | 亚洲系列中文字幕一区二区 | 国产免费小视频在线观看 | 毛片无遮挡高清免费观看 | 91精品久久久久久久久久小网站 | 日日摸夜夜添欧美一区 | 久久一区二区三区免费播放 | dxj久久成国产精品 fc2ppv成年免费视频观看 | 欧美中文综合在线视频 | 91视频国产91久久久 | 娇妻让朋友日出白浆 | 欧美一级看片a免费视频 | 久久理论片| 91碰在线| 国产一级毛片一区二区三区 | 深夜影院在线观看 | 久久精品一区 | 午夜aa| 久久久久777777人人人视频 | 久久sp| 免费在线观看日韩 | 日韩在线影院 | 中文字幕在线欧美 | 四虎影院入口 | 国产色在线视频 | 日本中文字幕在线观看视频 | 日本三级吃奶乳视频在线播放 |