• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

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

        用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中調試通過。

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

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 久久精品亚洲精品国产色婷| 亚洲午夜福利精品久久| 国精无码欧精品亚洲一区| 美女被暴羞羞免费视频| 永久免费看mv网站入口| 亚洲乱码卡一卡二卡三| 免费毛片a在线观看67194| 亚洲精品福利网泷泽萝拉| 84pao强力永久免费高清| 亚洲国产精品综合久久久| 黄色成人免费网站| 精品国产日韩久久亚洲| 卡一卡二卡三在线入口免费| 亚洲狠狠婷婷综合久久| 国产无遮挡又黄又爽免费视频| 亚洲av片在线观看| 亚洲一本大道无码av天堂| 最新亚洲成av人免费看| 久久精品国产亚洲AV果冻传媒| 91人成网站色www免费下载| 亚洲a级片在线观看| 四虎国产精品免费视| a级毛片免费观看在线| 水蜜桃亚洲一二三四在线| 一色屋成人免费精品网站| 女bbbbxxxx另类亚洲| 亚洲精品美女久久777777| 国产精品成人观看视频免费| 精品亚洲福利一区二区| 亚洲乱码无码永久不卡在线| 国产免费丝袜调教视频| 国产成人亚洲精品91专区高清| 国产亚洲一区二区三区在线观看| 精品国产sm捆绑最大网免费站| jizzjizz亚洲日本少妇| 亚洲国产另类久久久精品| 最新猫咪www免费人成| 久久免费观看视频| 国产精品亚洲精品| 亚洲人成无码久久电影网站| 精品一区二区三区免费毛片爱|