精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在HarmonyOS中調(diào)用百度翻譯API

系統(tǒng) OpenHarmony
在本案例中,我們是通過Http數(shù)據(jù)請求的方式調(diào)用百度翻譯API的,這意味著應用必須擁有聯(lián)網(wǎng)權(quán)限。

想了解更多關(guān)于開源的內(nèi)容,請訪問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

介紹

通過http請求和HarmonyOS自帶的加密框架,可以為移動應用實現(xiàn)調(diào)用百度翻譯API的功能。

完整示例

完整示例鏈接

開發(fā)環(huán)境要求

● DevEco Studio版本:DevEco Studio 3.1 Release

● HarmonyOS SDK版本:API version 9

工程要求

● API9

● Stage模型

正文

代碼結(jié)構(gòu)

main
├─ module.json5
├─ resources
│  ├─ zh_CN
│  ├─ rawfile        //圖片資源目錄
│  │  ├─ image1.png
│  │  └─ image2.png
│  └─ base
└─ ets
   ├─ XL_Modules
   │  └─ XL_Translation_Tool.ts    //翻譯工具模塊
   ├─ pages
   │  └─ Index.ets          //主頁面
   └─ entryability
      └─ EntryAbility.ts

添加權(quán)限

在本案例中,我們是通過http數(shù)據(jù)請求的方式調(diào)用百度翻譯API的,這意味著應用必須擁有聯(lián)網(wǎng)權(quán)限。所以我們需要在module.json5中申請“name”為"ohos.permission.INTERNET"的權(quán)限。

{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "phone"
    ],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      }
    ],
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ts",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:icon",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:icon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ]
  }
}

獲取百度翻譯開放平臺的App Id和密鑰

開發(fā)者能通過http數(shù)據(jù)請求調(diào)用百度翻譯API的前提是提供一些必要的認證信息,即開發(fā)者在百度翻譯開放平臺的App Id與密鑰。

首先,進入百度翻譯開放平臺的網(wǎng)址,網(wǎng)頁鏈接為http://api.fanyi.baidu.com。隨后,注冊個人用戶,并在注冊完成之后打開開發(fā)者信息的選項,即可查看自己的App Id與密鑰。

最后,我們還需要在平臺中開通通用文本翻譯API(這個是免費申請的),成功開通后可以進入下一步。


翻譯工具模塊

在本案例中,調(diào)用百度翻譯API的關(guān)鍵代碼被封裝在翻譯工具類中,而翻譯工具類( XL_Translation_Tool)則被集成在文件 XL_Translation_Tool.ts中。在XL_Translation_Tool.ts中,首先需要導入cryptoFramework與http,前者用于MD5數(shù)據(jù)加密,后者用于http數(shù)據(jù)請求。接著編寫兩個輔助函數(shù),分別為Generate_number_Sequence_10與Transform_10_To_16,前者用于生成十位隨機數(shù),后者則用于將10進制整數(shù)序列轉(zhuǎn)換為16進制整數(shù)序列。隨后,將MD5加密的代碼封裝在異步函數(shù)Generate_Sign內(nèi),并創(chuàng)建類XL_Translation_Tool。在類XL_Translation_Tool中,provideDeveloperInfo方法用于獲取開發(fā)者在百度翻譯開放平臺的App Id與密鑰,translate方法則是基于上述App Id與密鑰,以及待翻譯文本,來調(diào)用百度翻譯API。調(diào)用API需要的URL格式如下:

最后,導出一個XL_Translation_Tool實例。

//導入加密框架
import cryptoFramework from '@ohos.security.cryptoFramework';

//導入http模塊
import http from '@ohos.net.http';

/*
 * 函數(shù)名: Generate_number_Sequence_10
 * 描述: 隨機生成攜帶十個元素的數(shù)字序列(此序列的數(shù)據(jù)類型為字符串)
 */
function Generate_number_Sequence_10():string{

  var ret:string = ''

  for(var i = 0; i < 10; ++i){
    ret += Math.floor(Math.random()*9.999)
  }

  console.info('------[Random] '+ret)
  return ret

}

/*
 * 函數(shù)名: Transform_10_To_16
 * 描述: 用于將10進制整數(shù)序列(參數(shù)的數(shù)據(jù)類型為Uint8Array)轉(zhuǎn)換為16進制整數(shù)序列(輸出的數(shù)據(jù)類型為字符串)的輔助函數(shù)
 */
function Transform_10_To_16(Sign_10:Uint8Array):string{
  let Array_16 = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']
  let Sign_16:string = ''
  for(var item of Sign_10) Sign_16 += Array_16[(item-item%16)/16]+Array_16[item%16]
  console.info('------[MD5 16]: '+Sign_16.toString())
  return Sign_16
}

/*
 * 函數(shù)名: Generate_Sign
 * 描述: 通過MD5模塊進行信息加密, 以生成簽名
 */
async function Generate_Sign(query:string,appId:string, key:string, sequence_10:string){

  //預定義輸出
  let output = {
    'ifComplete':false,
    'Sign_16':null,
  }

  //創(chuàng)建md模塊
  let MD5 = cryptoFramework.createMd('MD5')

  //MD5加密的輸入值
  let sign = appId + query + sequence_10 + key

  //數(shù)據(jù)轉(zhuǎn)換
  var arr = []
  for(var i = 0 ; i < sign.length ; i++)arr.push(sign.charCodeAt(i))
  var dataBlog = {
    data:new Uint8Array(arr)
  }
  console.info('------[MD5 10] dataBlog: '+dataBlog.data.toString())

  //開始MD5加密
  await MD5.update(dataBlog)
  var SecretSign
  await MD5.digest().then((mdOutput) => {
    SecretSign = mdOutput.data
    console.info("------[MD5 10] MD result: " + SecretSign.toString());
    output.ifComplete = true
    output.Sign_16 = SecretSign
  }).catch((err) => console.error("------[MD5 10] err: " + err.code))

  output.Sign_16 = Transform_10_To_16(SecretSign)

  //輸出加密結(jié)果
  return output

}

/*
 * 枚舉名: TranslationForm
 * 描述: 用于確定翻譯流程的始末
 */
export enum TranslationForm{

  From_En_To_Zh = 0,

  From_Zh_To_En = 1

}

/*
 * 數(shù)據(jù)類型名: TranslationResult
 * 描述: 類XL_Translation_Tool的translate方法返回的數(shù)據(jù)類型
 */
declare type TranslationResult = {

  ifComplete:boolean

  result:string

  description:string

}

class XL_Translation_Tool{

  private TAG:string = '------[XL_Translation_Tool] '

  private Baidu_Translation_API_URL_Prefix:string = 'https://fanyi-api.baidu.com/api/trans/vip/translate'

  private Baidu_APPID:string = ''

  private Baidu_Key:string = ''

  private If_Provide_Developer_Info:boolean = false

  /*
   * 方法名: provideDeveloperInfo
   * 描述: 為XL_Translation_Tool提供百度翻譯平臺的開發(fā)者信息, 這是百度翻譯API得以被調(diào)用的前提
   */
  public provideDeveloperInfo(appId:string, key:string){
    this.Baidu_APPID = appId
    this.Baidu_Key = key
    this.If_Provide_Developer_Info = true
  }

  /*
   * 方法名: translate
   * 描述: 將輸入的字符串信息, 通過百調(diào)用度翻譯API進行翻譯并返回
   */
  public async translate(message:string, form:TranslationForm):Promise<TranslationResult>{

    //預定義返回值
    var ret:TranslationResult = {
      ifComplete:false,
      result:null,
      description:''
    }

    //判斷appId和key是否被提供
    if(!this.If_Provide_Developer_Info){
      ret.description = '請為翻譯工具提供百度智能翻譯平臺的開發(fā)者信息'
      console.info(this.TAG+'Please provide the appId and key')
      return ret
    }

    //通過http模塊實例化HttpRequest
    var httpRequest = http.createHttp()

    let from:string
    let to:string
    let query:string = message+''

    if(form == TranslationForm.From_En_To_Zh){
      from = 'en'
      to = 'zh'
    }else if(form == TranslationForm.From_Zh_To_En){
      from = 'zh'
      to = 'en'
    }

    //生成10位隨機整數(shù)序列
    const RANDOM_SEQUENCE:string = Generate_number_Sequence_10()

    var sign:string

    //生成簽名
    let msg = await Generate_Sign(query,this.Baidu_APPID,this.Baidu_Key,RANDOM_SEQUENCE)
    if(msg.ifComplete){
      sign = msg.Sign_16
    }else {
      ret.description = '加密過程出錯, 請檢查相關(guān)項'
      return ret
    }

    //拼接URL
    let url = this.Baidu_Translation_API_URL_Prefix
    +'?q=' + encodeURI(query)
    +'&from=' +from
    +'&to='+to
    +'&appid='+this.Baidu_APPID
    +'&salt='+RANDOM_SEQUENCE
    +'&sign='+sign

    console.info(this.TAG+'url: '+url)

    //調(diào)用request方法
    await httpRequest.request(url,{
      method:http.RequestMethod.POST,
      header:{
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    }).then((data)=>{
      console.info(this.TAG+'Succeed in connecting to Internet')
      // @ts-ignore
      let trans_result = JSON.parse(data.result).trans_result
      console.info(this.TAG+'Result:' + data.result);
      console.info(this.TAG+'code:' + JSON.stringify(data.responseCode));
      console.info(this.TAG+'Translate output:'+trans_result[0].dst)
      ret.ifComplete = true
      ret.description = '翻譯成功'
      ret.result = trans_result[0].dst
    }).catch(err => console.error(this.TAG+'err:'+JSON.stringify(err)))

    //銷毀HttpRequest實例
    httpRequest.destroy()

    //返回翻譯結(jié)果
    return ret
  }

}

//導出本模塊
export default new XL_Translation_Tool()

主頁面

在頁面Index.ets中,我們需要設計一個自定義彈窗(名為dialog1)。該彈窗有一個用@Link裝飾器修飾的變量If_Provide_Developer_Info,表示此自定義彈窗組件與其父組件支持雙向數(shù)據(jù)傳遞。彈窗中有兩個文本輸入組件,分別用于輸入開發(fā)者的App Id與密鑰,而內(nèi)容為"確定"的文本組件則用于調(diào)用XL_Translation_Tool實例的provideDeveloperInfo方法,將開發(fā)者認證信息載入XL_Translation_Tool實例中。

//導入自定義的翻譯工具
import XL_Translation_Tool, { TranslationForm } from 'ets/XL_Modules/XL_Translation_Tool'

//主頁面UI
@Entry
@Component
struct Index{
		......
}

//自定義彈窗
@CustomDialog
struct dialog1{

  dialogController:CustomDialogController
  @Link If_Provide_Developer_Info:boolean
  @State private Baidu_AppId:string = ''
  @State private Baidu_Key:string = ''

  build(){
    Column(){

      Text('APP Id: ')
        .fontSize(20)
        .fontWeight(600)
        .fontColor(Color.Gray)
        .margin({
          top:20,
          bottom:4
        })
        .width('86%')

      TextInput()
        .type(InputType.Number)
        .width('95%')
        .height(40)
        .backgroundColor('#eeeeee')
        .onChange((value:string) => this.Baidu_AppId = value)

      Text('密鑰: ')
        .fontSize(20)
        .fontWeight(600)
        .fontColor(Color.Gray)
        .margin({
          top:20,
          bottom:4
        })
        .width('86%')

      TextInput({
        text:this.Baidu_Key
      })
        .type(InputType.Password)
        .width('95%')
        .height(40)
        .backgroundColor('#eeeeee')
        .onChange((value:string) => this.Baidu_Key = value)

      Row(){
        Text('確認')
          .fontSize(24)
          .fontWeight(700)
          .fontColor(Color.Blue)
          .onClick(() => {
            this.dialogController.close()
            this.If_Provide_Developer_Info = true
            XL_Translation_Tool.provideDeveloperInfo(this.Baidu_AppId, this.Baidu_Key)
          })

        Text('取消')
          .fontSize(24)
          .fontWeight(700)
          .fontColor(Color.Red)
          .onClick(() => {
            this.dialogController.close()
          })
      }
      .width('100%')
      .margin({
        top:30
      })
      .justifyContent(FlexAlign.SpaceEvenly)


    }
    .height(260)
    .width('92%')
  }

}

最后,編寫頁面入口Index。dialogController表示自定義彈窗組件dialog1的控制器。

//導入自定義的翻譯工具
import XL_Translation_Tool, { TranslationForm } from 'ets/XL_Modules/XL_Translation_Tool'

//主頁面UI
@Entry
@Component
struct Index {

  @State private If_Provide_Developer_Info:boolean = false
  @State private translation_mode:number = TranslationForm.From_En_To_Zh

  @State private translation_content:string = ''
  @State private translation_result:string = ''

  private dialogController = new CustomDialogController({
    builder:dialog1({
      If_Provide_Developer_Info:$If_Provide_Developer_Info
    })
  })


  private async Begin_Translate(){
    let result = await XL_Translation_Tool.translate(this.translation_content, this.translation_mode)
    this.translation_result = result.result
  }

  build() {
      Column() {

        Text('百度翻譯API')
          .fontSize(36)
          .fontColor(Color.Pink)
          .fontWeight(800)
          .margin({
            top:20
          })


        Row(){

          Row() {
            Text('英譯中')
              .fontSize(20)
              .fontColor('#8099ff')
              .fontWeight(800)

            Image($rawfile('image2.png'))
              .height(30)
              .width(30)
          }

          Text('提供密鑰')
            .fontSize(20)
            .fontColor('#ff6666')
            .fontWeight(800)
            .onClick(() => this.dialogController.open())

        }
        .margin({
          top:20
        })
        .width('100%')
        .justifyContent(FlexAlign.SpaceEvenly)

        Text('輸入')
          .fontSize(20)
          .fontWeight(600)
          .fontColor(Color.Gray)
          .margin({
            top:30,
            bottom:10
          })
          .width('86%')


        TextArea()
          .width('90%')
          .height(120)
          .border({
            width:3,
          })
          .onChange((value:string) => this.translation_content = value)
          .fontSize(21)

        Text() {
          Span('結(jié)果')
        }
        .fontSize(20)
        .fontWeight(600)
        .fontColor(Color.Gray)
        .margin({
          top: 30,
          bottom: 10
        })
        .width('86%')


        TextArea({
          text:this.translation_result
        })
          .width('90%')
          .height(150)
          .border({
            width:3,
          })
        .fontSize(21)


        Row(){

          Image($rawfile('image1.png'))
            .height(40)
            .width(40)

          Text('翻譯')
            .fontWeight(700)
            .fontSize(24)
            .fontColor(Color.White)
            .margin({
              left:20
            })

        }
        .width('93%')
        .height(50)
        .backgroundColor('#8099ff')
        .borderRadius(30)
        .justifyContent(FlexAlign.Center)
        .margin({
          top:50
        })
        .onClick(() =>{
          if(!this.If_Provide_Developer_Info){
            this.dialogController.open()
            return
          }
          console.info('------[ArkUI] '+'--'+this.translation_content+'--')
          this.Begin_Translate()
        })


      }
      .width('100%')
  }
}

//自定義彈窗
@CustomDialog
......

這樣之后,調(diào)用百度API的案例便編寫完成了,使用模擬器或真機可以查看運行效果。受一些奇怪的bug的影響,本案例中的翻譯功能只支持英譯中。

總結(jié)

通過本次案例,相信你已經(jīng)學會如何在HarmonyOS中調(diào)用百度翻譯API。

想了解更多關(guān)于開源的內(nèi)容,請訪問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2011-10-21 09:28:25

百度地圖API

2015-10-26 12:20:05

百度

2011-10-21 10:16:25

百度地圖API

2020-12-02 13:46:24

百度大腦

2014-07-25 17:12:39

數(shù)據(jù)庫WOT2014MongoDB

2011-09-29 11:00:54

百度地圖API

2011-09-26 10:05:19

百度地圖API

2013-08-22 17:08:50

2012-02-01 09:33:36

百度地圖API

2011-12-29 16:18:14

API

2011-06-28 17:34:35

外鏈

2011-10-24 14:01:29

API

2011-09-16 14:39:02

百度地圖API

2011-09-16 10:37:42

地圖API

2018-07-19 15:04:39

百度

2009-09-25 09:22:14

百度李彥宏演講

2012-05-28 22:51:53

百度

2011-07-04 12:18:20

百度翻譯

2018-09-06 18:37:45

百度云

2012-10-19 09:47:30

百度云百度音樂云計算
點贊
收藏

51CTO技術(shù)棧公眾號

国产激情视频在线观看| 国产啪精品视频| www.桃色.com| 精品欧美不卡一区二区在线观看| 日本在线中文字幕一区| 亚洲欧洲日产国码二区| 国产69精品久久久久久| 久久精品成人av| 极品在线视频| 国产欧美1区2区3区| 成人免费大片黄在线播放| 色婷婷粉嫩av| 国产一区福利| 激情综合电影网| 国产裸体歌舞团一区二区| 精品国产123| 成人在线免费观看av| 啊v视频在线| 国产xxx精品视频大全| 日韩欧美中文一区二区| 久色视频在线播放| 男人的天堂在线| 久久精选视频| 精品少妇一区二区三区在线播放 | 欧美一区二区三区四区五区六区 | 在线免费观看黄| 成人高清在线视频| 国产精品久久电影观看| 日本少妇性高潮| 久久综合电影| 一区二区三区回区在观看免费视频| 国产清纯白嫩初高中在线观看性色| 欧美日韩va| 色八戒一区二区三区| 男女视频网站在线观看| 麻豆传媒在线完整视频| 亚洲综合婷婷| 国产一区二区视频在线| 欧美激情视频一区二区| 欧美成人高潮一二区在线看| a篇片在线观看网站| 99精品国产热久久91蜜凸| 91九色精品视频| 成人a v视频| 天天av综合| 尤物精品国产第一福利三区| 亚洲综合自拍网| 久久久久97| 日韩成人在线播放| 国产在线不卡av| 亚洲成人偷拍| av毛片午夜不卡高**水| 青青草97国产精品免费观看无弹窗版| 亚洲人成电影网站色…| 粉嫩av懂色av蜜臀av分享| 亚洲精品一区二区三区在线| 91精品国产综合久久精品app | 成人精品一二三区| 日本午夜精品| 亚洲欧美日韩高清| 在线免费播放av| 久久aimee| 亚洲国产精品系列| 中文字幕在线观看的网站| 日韩高清在线免费观看| 亚洲国产成人精品女人久久久 | 国产亚洲成精品久久| 北条麻妃亚洲一区| 亚洲三级在线| 黄色91在线观看| 精品一区二区三区毛片| 国产欧美熟妇另类久久久 | av一区二区三区免费| 中文字幕无线码一区| 九九九久久久精品| 97精品国产露脸对白| 精品中文字幕在线观看| 男女羞羞免费视频| 亚洲一区二区三区| 国内精品久久久| 国产a∨精品一区二区三区仙踪林| 久久精品国内一区二区三区水蜜桃 | 在线观看一区二区三区四区| 超碰在线亚洲| 国产午夜精品全部视频在线播放 | 亚洲黄色免费网站| 欧美三级资源在线| 成年人视频在线免费| 精品视频一二三| 久久久久国产精品麻豆| 欧美一进一出视频| 秋霞a级毛片在线看| 欧美韩国日本综合| 免费高清一区二区三区| 在线看片福利| 天天色 色综合| 69久久久久久| 国产区精品视频在线观看豆花| 亚洲欧美中文字幕| 欧美视频一区二区在线| 日本视频免费观看| 欧美日韩天堂| 中文字幕精品国产| 日韩精品――中文字幕| 日本系列欧美系列| 97人人模人人爽人人喊中文字| 日本韩国欧美中文字幕| 精久久久久久久久久久| 久久久久免费网| 中文字幕在线观看播放| 91国模大尺度私拍在线视频| 欧美性猛交乱大交| 波多野结衣的一区二区三区| 日韩中文字幕免费视频| 奇米影视第四色777| 激情偷乱视频一区二区三区| 久久久精品动漫| a黄色片在线观看| 精品久久中文字幕| 中文字幕中文字幕在线中一区高清 | 精品视频一二三区| 国产69精品久久99不卡| 2020国产精品| 国产精品扒开腿爽爽爽视频| 国产巨乳在线观看| 久久久精品人体av艺术| 一区二区精品国产| 超碰一区二区| 精品国产91九色蝌蚪| xxxx一级片| 日韩高清在线观看一区二区| 精品国内片67194| 成人高潮免费视频| 新67194成人永久网站| 国产精品一区二区三区在线观| av影片在线看| 中文字幕精品综合| 凹凸国产熟女精品视频| 精品国产亚洲一区二区三区在线 | 欧美手机在线视频| 少妇精品一区二区| 国产日韩亚洲| 国产综合第一页| 亚洲www色| 日韩一区二区免费电影| 久久久久久18| 中文字幕一区二区三区人妻不卡| 天堂网av2014| 亚洲精品日韩一| 欧美三级午夜理伦三级| 久久99国产精品久久99大师| 欧美精品久久一区二区| 国产乱色精品成人免费视频| 亚洲欧洲无码一区二区三区| 中文字幕一区久久| 成人在线免费小视频| 日本午夜人人精品| av无码精品一区二区三区宅噜噜| 99精品欧美一区| 欧美国产视频一区| 福利写真视频网站在线| 精品视频在线视频| 亚洲免费观看在线| 欧美精品激情| 国产成人激情小视频| www在线播放| 欧美四级电影在线观看| 久久国产高清视频| 国产免费的av| 国内精品伊人久久久久影院对白| 影音先锋亚洲视频| 日本免费一区二区视频| 久久艳片www.17c.com | 在线男人天堂| 日韩成人av网| 午夜毛片在线观看| 久久香蕉国产线看观看99| 日本手机在线视频| 国产欧美一区二区精品久久久| 国产精品男女猛烈高潮激情| 在线国产91| 亚洲成人av在线| 日本a级片视频| 成人激情综合网站| 免费在线观看的毛片| 97色伦图片97综合影院| 亚洲xxx自由成熟| av大片在线看| 亚洲白虎美女被爆操| 久久亚洲天堂网| 中文字幕制服丝袜一区二区三区| 999热精品视频| 国产综合婷婷| 视频一区三区| 国产主播av在线| 国产精品v日韩精品v欧美精品网站 | 国产日韩欧美一区二区三区综合| 在线码字幕一区| 欧美aaaaa级| 国产精品日韩一区| 北条麻妃在线| 亚洲成**性毛茸茸| 国产精品久久久久毛片| 精品国产福利在线| 不卡一区二区在线观看| 国产一区二区导航在线播放| 高清无码一区二区在线观看吞精| 婷婷在线观看视频| 黑丝美女久久久| 日本激情视频一区二区三区| 久久精品99久久久| 亚洲美免无码中文字幕在线| 欧美freesex8一10精品| 欧美一级淫片丝袜脚交| 亚洲欧洲成人在线| 欧美猛男男办公室激情| 免费黄色av片| 一区二区高清视频在线观看| 午夜精品久久久99热福利| 日本熟妇乱子伦xxxx| 国产精品对白交换视频| 波多野结衣一二三区| 国产亚洲毛片| 成人a在线视频| xxxxx.日韩| 午夜欧美不卡精品aaaaa| 超碰人人在线| 在线观看国产欧美| 激情福利在线| 亚洲精品国精品久久99热一| 精品乱子伦一区二区| 欧美视频第二页| 亚洲精品国产欧美在线观看| 调教+趴+乳夹+国产+精品| 国产无遮挡在线观看| 久热成人在线视频| 69堂免费视频| 最新亚洲精品| 欧美另类高清视频在线| 美女视频亚洲色图| 国产精品免费区二区三区观看 | 91在线精品观看| 午夜小视频在线观看| a篇片在线观看网站| 欧美日本在线观看| 无码人妻黑人中文字幕| 亚洲免费观看视频| 男女性高潮免费网站| 亚洲欧美日韩小说| 日本少妇高清视频| 青青色在线视频| 欧美久久久久久久久久| 久久久999久久久| 91视频免费播放| 在线观看国产免费视频| 95精品视频在线| 佐佐木明希电影| 亚洲激情影院| 日日橹狠狠爱欧美超碰| 久久国产高清| 污网站免费在线| 久久精品72免费观看| 国产福利在线免费| 狠狠色丁香久久婷婷综合丁香| 911av视频| 国产成人av影院| 国产九九在线观看| 国产一区二区在线影院| 中文字幕avav| 99久久伊人网影院| 午夜影院黄色片| 欧美高清在线精品一区| 丰腴饱满的极品熟妇| 精彩视频一区二区三区| 欧美国产在线一区| 91首页免费视频| 舐め犯し波多野结衣在线观看| 老司机精品视频在线| 成人av毛片在线观看| 国产91精品精华液一区二区三区 | 九九九免费视频| 99久久免费精品高清特色大片| 一级黄色在线播放| 成人免费视频视频在线观看免费 | 欧美高清视频看片在线观看| 国产一区香蕉久久| www久久久| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久蜜柚 | 亚洲国产精品高清| 日本成人黄色网| 国产一区二区视频在线播放| 久久人人爽人人爽人人片| 99久久精品国产麻豆演员表| 中文天堂资源在线| 亚洲欧美乱综合| 一二三区免费视频| 欧美另类videos死尸| 最近中文字幕免费在线观看| 欧美性猛交xxxx偷拍洗澡| 国产乱淫a∨片免费视频| 亚洲乱码av中文一区二区| 夜级特黄日本大片_在线| 欧美激情一级二级| 日韩伦理精品| 日韩免费电影一区| 久久久久久国产精品日本| 国产精品中文字幕日韩精品| 一卡二卡三卡四卡五卡| 国产欧美精品一区二区三区四区 | 91久久极品少妇xxxxⅹ软件| 欧美亚洲色图校园春色| 成人在线免费高清视频| 国产精品毛片在线| 亚洲成人手机在线观看| 国产丝袜欧美中文另类| 免费中文字幕在线观看| 国产精品高潮久久久久无| 尤物视频在线观看国产| 日韩欧美的一区| 免费a级人成a大片在线观看| 8090成年在线看片午夜| 操你啦视频在线| 欧美成人免费在线视频| 欧美精品高清| 91美女福利视频| 国产精品一区二区三区四区五区| 超鹏97在线| 国产精品男女猛烈高潮激情| 日韩成人午夜| 欧美无砖专区免费| 国产麻豆成人精品| 中文字幕乱码av| 欧美性高潮床叫视频| 国产毛片一区二区三区va在线| 无码av免费一区二区三区试看| 精品国产va久久久久久久| 这里只有精品久久| 日韩高清成人| 久久蜜桃av一区精品变态类天堂 | 在线免费观看亚洲视频| 精品视频1区2区3区| 人妻精品一区一区三区蜜桃91| 色综合五月天导航| 国产成人毛片| 亚洲精品国产拍免费91在线| 岛国av免费在线观看| 97伦理在线四区| 欧美日韩精品一区二区视频| 国产欧美在线一区| 91在线精品一区二区| 国产成人在线免费观看视频| 亚洲精品第一国产综合精品| 999福利在线视频| 成人免费看吃奶视频网站| h视频久久久| 偷拍盗摄高潮叫床对白清晰| 久久精品综合| 国产三级黄色片| 欧美性做爰猛烈叫床潮| 日韩伦理在线电影| 91视频-88av| 国产精品啊啊啊| 国产 中文 字幕 日韩 在线| 久久精品国产在热久久| 日韩免费av电影| 最新亚洲一区| av网页在线观看| 日韩欧美中文第一页| 日本一区视频| 国产欧美韩国高清| 欧美精品观看| www.免费av| 日韩欧美中文字幕在线播放| www.日韩在线观看| 97激碰免费视频| 精品按摩偷拍| 国产免费黄视频| 久久综合九色综合97婷婷| 中文字幕欧美在线观看| 欧美成人全部免费| 亚洲中文字幕在线一区| 2017欧美狠狠色| 亚洲制服丝袜在线播放| 精品国产1区2区| 日韩伦理在线观看| 国产精选在线观看91| 欧美日韩日本国产亚洲在线| av网站免费在线播放| 欧美精品1区2区| 国产一二三在线| 亚欧精品在线| 国产精品99久久久久久久女警 | 亚洲精品国产精品国自产观看浪潮 | 久久免费看少妇高潮| 亚洲国产综合久久| 少妇高潮久久77777| 亚洲视频精选| 污版视频在线观看| 91日韩在线专区| 国产美女裸体无遮挡免费视频 |