在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

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

從 SOAP Toolkit 遷移到 Web 服務

從 SOAP Toolkit 遷移到 Web 服務

更新時間:2022-05-08 文章作者:未知 信息來源:網(wǎng)絡 閱讀次數(shù):

摘要:如何從 Visual Basic 6.0 和 Visual Basic .NET 訪問 Web 服務,以及如何將現(xiàn)有的 SOAP 應用程序轉換到 .NET 平臺。

目標
了解 Microsoft® Visual Studio® .NET 中的 SOAP 工具
回顧使用 SOAP 和 Visual Basic® 6.0 訪問 COM/COM+ 組件
從 Visual Basic .NET 訪問 Web 服務
將 SOAP Toolkit 應用程序遷移到 Web 服務
前提條件
了解什么是 Web 服務
精通并且可以訪問 Visual Basic 6.0 和 SOAP,且知道如何創(chuàng)建 ActiveX® DLL 項目
熟悉有關 Visual Studio .NET 的基礎知識
Web 服務、SOAP 和您的工具
Web 服務提供了可以通過 Internet 訪問的功能,即調用 Web 服務并獲取返回的結果。Web 服務的新增功能是,您現(xiàn)在可以連接到世界最大網(wǎng)絡 Internet 上的服務。不過,作為一名 Visual Basic 程序員,Web 服務為您處理了繁瑣的 Internet 事務。

在本文中,您將了解如何使用 Visual Studio .NET 訪問 Web 服務、回顧使用 Visual Basic 6.0 和 SOAP Toolkit 2.0 創(chuàng)建 Web 服務的過程,還將了解如何轉換現(xiàn)有的 SOAP Toolkit 應用程序,以便在 .NET 框架中使用 Web 服務。

本文使用的 Web 服務有一個非常簡單的函數(shù) createCustomer。它接受客戶的姓名,并返回客戶標識符。但是,我們不在這里討論 Web 服務的功能,以便您可以集中精力了解如何使用 Visual Basic 6.0 或 Visual Basic .NET 創(chuàng)建和訪問 Web 服務。

Visual Basic 和 SOAP
用戶通過發(fā)送和接收 SOAP 文檔與 Web 服務通信。在 Visual Basic 6.0 中,有兩種方法可以創(chuàng)建 SOAP 文檔:

通過連接字符串組合文檔
使用 SOAP Toolkit 2.0 中的 SoapClient
SoapClient 不僅創(chuàng)建一個 SOAP 文檔與 Web 服務通信,還將該文檔發(fā)送到 Web 服務進行處理。

在傳輸?shù)?Web 服務端,需要一個 SOAP 偵聽器捕獲并處理客戶端發(fā)送的文檔。SOAP Toolkit 2.0 包括 SoapServer,可以在偵聽應用程序中使用它處理 SOAP 文檔。偵聽器是單獨創(chuàng)建的應用程序,它獨立于實現(xiàn) Web 服務的組件。

使用 Visual Studio .NET,可以簡化對 Web 服務的創(chuàng)建和訪問。在 Visual Studio .NET 中,創(chuàng)建 Web 服務并不要求構造單獨的偵聽應用程序。在訪問 Web 服務時,它會自動為您創(chuàng)建代理,這樣,您使用 Web 服務就像訪問其他任何對象一樣。

Web 服務描述工具
Web 服務描述語言 (WSDL) 是一種 XML 語言,它是專門為描述 Web 服務而設計的。作為使 Web 服務成為開放式標準的過程的一部分,WSDL 已連同 SOAP 一起提交到 W3C。對服務的 WSDL 描述可以包含 wsdlSpec tModel,它為服務提供創(chuàng)建和發(fā)送 SOAP 文檔所需的全部信息。以下是支持 createCustomer 函數(shù)的 wsdlSpec tModel 文件的示例:

<?xml version='1.0' encoding='UTF-8' ?>
<!-- Generated 06/25/01 by Microsoft SOAP Toolkit WSDL
File Generator, Version 1.00.623.1 -->
<definitions name ='cust'
targetNamespace = 'http://tempuri.org/wsdl/'
xmlns:wsdlns='http://tempuri.org/wsdl/'
xmlns:typens='http://tempuri.org/type'
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:stk=
'http://schemas.microsoft.com/soap-toolkit/wsdl-extension'
xmlns='http://schemas.xmlsoap.org/wsdl/'>
<types>
<schema targetNamespace='http://tempuri.org/type'
xmlns='http://www.w3.org/2001/XMLSchema'
xmlns:SOAP-ENC=
'http://schemas.xmlsoap.org/soap/encoding/'
xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
elementFormDefault='qualified'>
</schema>
</types>
<message name='Custservices.createCustomer'>
<part name='First' type='xsd:string'/>
<part name='Last' type='xsd:string'/>
</message>
<message name='Custservices.createCustomerResponse'>
<part name='Result' type='xsd:string'/>
</message>
<portType name='CustservicesSoapPort'>
<operation name='createCustomer'
parameterOrder='First Last'>
<input message=
'wsdlns:Custservices.createCustomer' />
<output
message='wsdlns:Custservices.createCustomerResponse' />
</operation>
</portType>
<binding name='CustservicesSoapBinding'
type='wsdlns:CustservicesSoapPort' >
<stk:binding preferredEncoding='UTF-8'/>
<soap:binding style='rpc'
transport='http://schemas.xmlsoap.org/soap/http' />
<operation name='Add' >
<soap:operation soapAction=
'http://tempuri.org/action/Custservices.Add' />
<input>
<soap:body use='encoded'
namespace='http://tempuri.org/message/'
encodingStyle=
'http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded'
namespace='http://tempuri.org/message/'
encodingStyle=
'http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
</binding>
<service name='cust' >
<port name='CustservicesSoapPort'
binding='wsdlns:CustservicesSoapBinding' >
<soap:address
location='http://localhost/customer/cust.ASP' />
</port>
</service>
</definitions>

wsdlSpec tModel 末尾的 <service> 標記指定將請求發(fā)送到哪個 SOAP 偵聽器,在本例中,將發(fā)送到 http://localhost/cust/cust.asp 頁。此文件的前一部分說明服務可以使用的消息。

注意:SOAP 文檔中使用的名稱空間 tempuri.org 是一個臨時名稱空間,僅在開發(fā)時使用 (temporary uri)。在此服務投入到產(chǎn)品之前,應修改 WSDL 文件,使其擁有唯一的 URI(例如,您公司網(wǎng)站的 URL)。
SOAP Toolkit 對象和 Visual Studio .NET IDE 都讀取 WSDL 文件。SoapClient 使用 WSDL 文件中的信息以使其作為 Web 服務的代理。Visual Studio .NET 使用同樣的信息為 Web 服務生成代理類。因此,您可以執(zhí)行以下操作:

調用 Web 服務的方法,好像它們是這些代理的方法。
發(fā)送消息前,根據(jù) Web 服務的 WSDL 描述驗證調用。
與代理交互,而不必熟悉 WSDL 文件的內容或要生成的 SOAP 文檔。
圖 1 顯示了各個組件之間的關系,包括 Web 服務元語言 (WSML) 文件。只有 Visual Basic 6.0 需要此文件,并在其演練中描述此文件。




圖 1:Web 服務和客戶端示意圖

在 SOAP 中,SOAP Toolkit 和 Visual Studio .NET IDE 執(zhí)行類似的功能。所不同的是,SOAP Toolkit 對象不能提供 Visual Basic 開發(fā)人員所需的全部支持。在圖 2 中,可以看到 IntelliSense&reg; 支持(Visual Basic 程序員認為此類支持是必要的)。IntelliSense 下拉列表自動顯示 Customerservices COM 對象的 createCustomer 方法。




圖 2:COM/DCOM/COM+ 對象的 IntelliSense 支持

在圖 3 中,您可以看到 SoapClient 為 Web 服務提供的 IntelliSense 支持。所有的 SoapClient 方法均列出,但沒有顯示將 SoapClient 作為代理的服務所擁有的方法(即 createCustomer)。




圖 3:使用 SoapClient 的 IntelliSense 支持

如果使用 Visual Studio .NET,由 IDE 生成的代理類能夠比 SOAPClient 更好地表示 Web 服務。在圖 4 中,您可以看到用于訪問 Web 服務的 IntelliSense 支持。createCustomer 方法是與 Web 服務交互的對象所擁有的方法之一。




圖 4:Visual Studio .NET 中對 Web 服務的 IntelliSense 支持

SOAP Toolkit 2.0 概述
本節(jié)簡單回顧了在上一節(jié) Web 服務、SOAP 和您的工具中介紹的創(chuàng)建 Web 服務的過程。

使用 SOAP Toolkit 創(chuàng)建和訪問 Web 服務
在 Visual Basic 6.0 中,為 Web 服務創(chuàng)建名為 CustCP 的新 Visual Basic ActiveX DLL 項目和名為 Customerservices 的類模塊及其代碼:
Public Function createCustomer(ByVal First As String, _
ByVal Last As String) As String

createCustomer = "A" & CStr(Len(First)) & _
CStr(Len(Last))
End Function

使用 SOAP Toolkit 的 WSDL 向導生成 WSDL 和 WSML 文件(WSML 文件中包含 SOAPServer 用于從 Web 服務映射到 ActiveX COM 對象的信息)。
創(chuàng)建 SOAP 偵聽器,作為使用 SOAPServer 的 ASP 頁:
<%@ LANGUAGE=VBScript %>
<%Option Explicit

Dim ss
Dim WSDL
Dim WSML

Response.ContentType = "text/xml"

WSDL = Server.MapPath("cust.wsdl")
WSML = Server.MapPath("cust.wsml")

Set ss = Server.CreateObject("MSSOAP.SoapServer")
ss.Init WSDL, WSML
ss.SOAPInvoke Request, Response, ""%>

創(chuàng)建客戶端以調用使用 SOAPClient 的 Web 服務:
Private Sub cmdCreate_Click()
Dim sc As MSSOAPLib.SoapClient

Set sc = New SoapClient
sc.mssoapinit "http://vogel2/cust/cust.wsdl"
Me.txtCustId.text = _
sc.createCustomer(Me.txtFirstName.text, _
Me.txtLastName.text)
End Sub

Visual Basic .NET 演練
在本節(jié)中,您將了解如何完成以下操作:

在 Visual Studio .NET 中創(chuàng)建 Web 服務。
從 Visual Basic .NET 應用程序訪問 Web 服務。
在 Visual Studio .NET 中生成 Web 服務時,將為該 Web 服務自動生成一個“發(fā)現(xiàn)文件”。發(fā)現(xiàn)文件用于向其他 Visual Studio .NET 應用程序添加 Web 服務引用,包括 WSDL 描述。

注意:對于 Visual Basic 和 C# 項目,發(fā)現(xiàn)文件的文件類型是 .vsdisco;對于 C 項目,則是 .disco。
在 Visual Studio .NET 中創(chuàng)建 Web 服務
在 File(文件)菜單上,選擇 New(新建)以顯示 New Project(新建項目)對話框,如圖 5 所示。


圖 5:Visual Studio .NET New Project(新建項目)對話框

在 Visual Basic Projects(項目)部分中,選擇 ASP.NET Web 服務。
在 Name(名稱)框中,給出項目名稱 (MigratetoDotNetService)。
為 Web 服務輸入 Web 站點 URL (localhost/customer)。
單擊 OK(確定),創(chuàng)建項目。默認情況下,項目包含名為 Service1.asmx 的模塊。
右鍵單擊 Service1.asmx 模塊,并從菜單中選擇 View Code(查看代碼)。
將此代碼添加到模塊頂部的 Public Class Service1 語句中,如下所示:
<WebService(Namespace:="http://phvis.com/customer/", _
Description:="客戶管理") _
Public Class Service1

從 Visual Basic 6.0 示例中復制 createCustomer 函數(shù),但將 <WebMethod> 屬性添加到函數(shù)聲明中,如下所示:
<WebMethod(Description:= _
"傳遞姓名,返回 ID 值")> _
Public Function createCustomer( _
ByVal First As String, _
ByVal Last As String) As String

只需要更改一處,就可以將 Visual Basic 6.0 代碼轉換成 Visual Basic .NET 語法。使用 Return 替換函數(shù)中的 createCustomer =,如下所示:
Return "A" & CStr(Len(First)) & _
CStr(Len(Last))
End Function

在 Build(生成)菜單上,選擇 Build(生成)以創(chuàng)建 Web 服務。在 Output(輸出)窗口中檢查生成過程中的錯誤。作為生成的一部分,還會生成應用程序的發(fā)現(xiàn)文件。
創(chuàng)建客戶端
無需創(chuàng)建 .NET 客戶端,用 SOAP Toolkit 創(chuàng)建的 Visual Basic 6.0 應用程序就可以訪問 .NET Web 服務。以下步驟將展示如何為 Web 服務創(chuàng)建 .NET 客戶端(與 Web 服務是用 Visual Basic 6.0 還是用 Visual Basic .NET 編寫無關):

在 File(文件)菜單上,選擇 New(新建),然后選擇 Project(項目)以顯示 Add Project(添加項目)對話框。
在 Visual Basic Projects(項目)部分,選擇 Windows Application(Windows 應用程序)。
在 Name(名稱)框中給出項目名稱 (MigratetoWebClient),然后單擊 OK(確定)以創(chuàng)建項目。
在 Solution Explorer(解決方案資源管理器)中,右鍵單擊此項目并選擇 Add Web Reference(添加 Web 引用)。將顯示 Add Web Reference(添加 Web 引用)對話框,如圖 6 所示。


圖 6:Add Web Reference(添加 Web 引用)對話框

在 Address(地址)框中輸入 Web 服務項目的 .vsdisco 文件的 URL。例如,http://localserver/customers/MigratetoNetService.vsdisco。單擊 Address(地址)框末尾的箭頭選取引用。
注意:通過將 .vsdisco 文件從 Solution Explorer(解決方案資源管理器)拖動到代碼模塊中,也可以獲得 Web 服務項目的 .vsdisco 文件的 URL。這會將文件的 URL 添加到代碼模塊中。然后,從模塊中剪切 URL,并將其粘貼到 Add Web Reference(添加 Web 引用)對話框的 Address(地址)框中。
單擊 Add Reference(添加引用)按鈕返回項目。對 Web 服務的引用將顯示在 Solution Explorer(解決方案資源管理器)中,如圖 7 所示。


圖 7:包含一個 Web 服務引用的 Visual Basic Windows 應用程序

向窗體添加名為 txtFirstName 和 txtLastName 的文本框,用于存放客戶的姓名,并為調用 Web 服務的代碼添加一個按鈕。
添加代碼以聲明引用代理類的變量,此代理類處理 Web 服務(代理類的默認名稱由服務器名稱和服務名稱組成):
Private Sub cmdCreate_Click()
Dim cc As localhost.service1

添加代碼,實例化代理類并調用 Web 服務的方法:
Set cc = New localhost.service1
Me.txtCustId.text = _
cc.createCustomer(Me.txtFirstName.Text, _
Me.txtLastName.Text)
End Sub

按 F5,運行客戶端并訪問 Web 服務。
從 SOAP Toolkit 轉換到 Visual Studio .NET
使用 SOAP Toolkit 或 .NET Web 服務生成的應用程序符合 SOAP 規(guī)范。使用基于 SOAP 的應用程序時,客戶端和 Web 服務之間的連接由 WSDL 文件定義。使用 .NET 生成的 Web 服務可以使用由 SOAP Toolkit 生成的 Web 服務,反之亦然。這使您可以通過存放服務常量的 WSDL 定義,逐步從 SOAP Toolkit 遷移到 .NET。例如,在 Web 服務轉換到 .NET 的同時,訪問 Web 服務的客戶端能繼續(xù)使用 SOAP Toolkit 的 SOAPClient。

存放 Web 服務常量的 WSDL 文件的最簡單方法是,將 Visual Basic 6.0 代碼復制到 Web 服務的 asmx 模塊中。復制完成后,必須將 <WebService> 和 <WebMethod> 屬性添加到類模塊中,以創(chuàng)建 .NET Web 服務。然后,需要將 Visual Basic 6.0 代碼轉換成 .NET 語法,如 MSDN 和本系列的其他文章所述。如果您想創(chuàng)建全新的 .NET 版的 Web 服務,可以使用 SOAP Toolkit 版的 WSDL 文件生成 Web 服務的基本代碼。

在客戶端,訪問 Web 服務的不同客戶端應用程序可以分別從 SOAP Toolkit 轉換到 .NET。由于 SOAP 規(guī)范提供的互操作性,即使由一個客戶端生成了多個 .NET 版本,也不會產(chǎn)生問題。要在客戶端內從 SOAP Toolkit 轉換到 Visual Studio .NET,必須用對 Web 服務代理的引用替換對 SOAPClient 的引用。

小結
您已經(jīng)了解了如何從 Visual Basic 6.0 和 Visual Basic .NET 訪問 Web 服務。還了解了將現(xiàn)有的 SOAP 應用程序轉換到 .NET 平臺所需完成的操作。

重點要記住的是以下三點:

WSDL 文件用于描述可以發(fā)送到 Web 服務的 SOAP 文檔。在 Visual Basic 6.0 中,可以使用 SOAP Toolkit 的 WSDL Generator 創(chuàng)建此文件;在 Visual Studio .NET 中,將為您自動生成此文件。
在 Visual Basic 6.0 中創(chuàng)建 Web 服務時,需要 Microsoft WSML 文件和單獨的 ASP 偵聽器頁;在 Visual Studio .NET 中創(chuàng)建 ASP.NET Web 服務時,兩者都不需要。
可以隨意混用客戶端和服務,而不必考慮平臺。可以使用 SoapClient,從 Visual Basic 6.0 客戶端或 ASP 頁調用 Visual Basic .NET Service,并且您的 Visual Basic 6.0 Web 服務可以使用 SoapServer 處理來自 Visual Studio .NET 客戶端的請求。

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

本類教程下載

系統(tǒng)下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 欧美黑人经典片免费观看| 玖玖精品在线视频| 91免费版看片| 国产熟女高潮视频| 鲁一鲁一鲁一鲁一av| 超碰在线免费av| 国产精品www在线观看| 免费在线观看毛片网站| 国产精品999.| 激情综合网婷婷| 1314成人网| 日本久久精品一区二区| 亚洲成人手机在线观看| 妺妺窝人体色www在线小说| 已婚少妇美妙人妻系列| 精品日韩在线播放| 一级特黄性色生活片| 国产成a人亚洲精v品在线观看| 国产自偷自偷免费一区| 国产在线播放观看| 日韩亚洲欧美视频| 人人妻人人澡人人爽欧美一区| 免费涩涩18网站入口| 人妻无码视频一区二区三区| 中文字幕人妻熟女人妻洋洋| 992kp免费看片| 黑人巨茎大战欧美白妇| 韩国无码av片在线观看网站| 六月婷婷激情网| 日韩极品视频在线观看| 欧美中日韩在线| www黄色在线| 亚洲18在线看污www麻豆| 天堂网成人在线| 91大学生片黄在线观看| 国产亚洲黄色片| 亚洲一级免费观看| www亚洲国产| 精品久久久久久久无码| 国产乱女淫av麻豆国产| 免费看国产曰批40分钟| 日韩精品aaa| 青青在线视频免费| www.69av| 欧美大黑帍在线播放| 九九九在线观看视频| 18岁网站在线观看| 免费一级淫片aaa片毛片a级| 国产三级精品三级在线| 午夜dv内射一区二区| 黄色一级视频在线播放| 九一免费在线观看| 亚洲精品免费一区亚洲精品免费精品一区 | 天堂在线精品视频| 亚洲五月天综合| 国产区二区三区| 北条麻妃视频在线| 天堂一区在线观看| 日韩精品视频网址| gogogo免费高清日本写真| 精品综合久久久久| 91大学生片黄在线观看| 欧美这里只有精品| 亚洲成人av免费看| 伊人色在线观看| 麻豆视频传媒入口| 国产亚洲精品网站| 亚洲一区二区蜜桃| 久久这里只有精品18| 日本精品一区二区三区四区 | 欧美成人xxxxx| 91香蕉国产线在线观看| 国产69精品久久久久999小说| 国内自拍在线观看| 日本一本草久p| 中文字幕网av| 精品国产一二三四区| 五月天av在线播放| 青青草精品视频在线| 毛片毛片毛片毛片毛| 大地资源网在线观看免费官网| 999久久久精品视频| 大陆极品少妇内射aaaaa| 欧美美女一级片| 成熟丰满熟妇高潮xxxxx视频| 国产探花在线观看视频| 任你操这里只有精品| 国产乱子伦精品无码专区| 国产一二三四区在线观看| 国产又粗又长又爽又黄的视频| 日韩精品xxxx| 日韩精品一区二区三区不卡| 日本xxxxxxxxxx75| 国产一区二区网| 免费成人在线视频网站| 久久精品午夜福利| 欧美日韩在线成人| 午夜剧场高清版免费观看 | 国产卡一卡二在线| 69精品丰满人妻无码视频a片| 熟女视频一区二区三区| 日韩视频免费播放| 亚洲精品高清无码视频| 波多野结衣网页| 缅甸午夜性猛交xxxx| 日本久久久久久久久久久久| 91小视频在线播放| 成人综合视频在线| 手机精品视频在线| 天天爱天天操天天干| 日本黄网站色大片免费观看| 国产精品无码一本二本三本色| caoporm在线视频| www日韩视频| 黄色一级一级片| 免费看污污视频| 日韩精品在线播放视频| 在线不卡一区二区三区| koreanbj精品视频一区| 2018国产在线| 欧美午夜小视频| 国产xxxxx在线观看| 欧美成人高潮一二区在线看| www.久久久久久久久久久| 88av.com| 久久6免费视频| www.这里只有精品| 国产精品无码乱伦| 日本福利视频网站| 精品少妇人妻av免费久久洗澡| 粉嫩av一区二区三区天美传媒| www.com久久久| 亚洲欧美日韩不卡| 免费黄色福利视频| 色噜噜狠狠一区二区| 三年中文高清在线观看第6集| 亚洲一二区在线观看| 免费无码毛片一区二三区| 99色精品视频| 性做爰过程免费播放| 免费在线激情视频| 蜜桃福利午夜精品一区| 男人的天堂99| 水蜜桃在线免费观看| 成人免费视频久久| 欧美黄色免费网址| 亚洲第一天堂久久| 欧美黄色一级片视频| 妞干网在线视频观看| 欧美国产在线一区| 国产小视频精品| 男人舔女人下面高潮视频| 国产日本在线播放| 国产欧美123| 日本黄色播放器| 三年中文高清在线观看第6集| 日本成人中文字幕在线| 草草久久久无码国产专区| 日韩五码在线观看| 丰满的少妇愉情hd高清果冻传媒| 国产精品久久成人免费观看| 亚洲精品久久久久久宅男| 特级丰满少妇一级| 五月天激情视频在线观看| 国产欧美精品一二三| 裸体大乳女做爰69| 国产女主播自拍| 亚洲精品中文字幕无码蜜桃| 欧美精品无码一区二区三区| 自拍偷拍一区二区三区四区| 五月天中文字幕在线| av电影一区二区三区| 免费观看精品视频| 九九九久久久久久久| 2018国产在线| 艳母动漫在线免费观看| 亚洲熟妇av日韩熟妇在线| 欧美 日韩 国产 在线观看| 日韩小视频在线播放| 91网址在线观看精品| 国产精品无码av在线播放| 手机在线国产视频| 亚洲人成色77777| 青青草原成人网| 蜜桃视频一区二区在线观看| 中文字幕欧美人妻精品一区| 免费在线看黄色片| r级无码视频在线观看| 男人天堂新网址| 国产探花在线观看视频| 色婷婷.com| 加勒比av中文字幕| 黄色一级片网址| 人人妻人人澡人人爽精品欧美一区| 手机视频在线观看| 亚洲日本黄色片| 欧美一区二区视频在线播放| 91视频 - 88av| 欧美视频在线播放一区| 午夜免费高清视频|