精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

6080午夜不卡| 久久精品一区二区三区不卡牛牛| 中国日韩欧美久久久久久久久| av亚洲天堂网| 手机av免费在线| 99久久综合国产精品| 国产精品r级在线| 污软件在线观看| 林ゆな中文字幕一区二区| 91福利视频在线| 真人做人试看60分钟免费| 凸凹人妻人人澡人人添| 免费的成人av| 国内成人精品一区| 欧美aaa级片| 美女主播精品视频一二三四| 欧美日韩精品一区视频| 99在线免费视频观看| h视频在线播放| 不卡一区二区三区四区| 国产日本欧美在线观看| 永久免费看片在线播放| 天天天综合网| 亚洲色图综合久久| 黄色在线免费播放| 一区二区三区| 色国产综合视频| 久久手机在线视频| 欧美a免费在线| 久久精品亚洲国产奇米99| 97人人做人人人难人人做| 最好看的日本字幕mv视频大全| 伊人久久久大香线蕉综合直播| www.亚洲一区| 少妇饥渴放荡91麻豆| 中文字幕一区二区三区四区久久| 欧美日本一区二区三区四区| 欧美国产激情视频| 色女人在线视频| 中文字幕一区三区| 视频在线观看成人| 精品影院一区| 久久亚洲一级片| 久久精品综合一区| 狠狠人妻久久久久久综合麻豆| 韩国成人精品a∨在线观看| 国产国语刺激对白av不卡| 五月天综合在线| 国产精品成人一区二区网站软件| 久久视频在线播放| 91香蕉视频污在线观看| 大片网站久久| 在线播放国产一区中文字幕剧情欧美| 国产偷人妻精品一区| 国产一区二区三区不卡av| 日韩一区二区三区av| 激情成人在线观看| 成人在线视频www| 欧美麻豆精品久久久久久| 在线免费av播放| 国产日本久久| 欧美日韩1234| 人妻巨大乳一二三区| 精品麻豆剧传媒av国产九九九| 欧美日韩精品一区二区三区 | 国产精品美女久久久浪潮软件| 欧美日韩电影在线观看| 久久久综合久久久| 国产精品99一区二区| 欧美精品日韩www.p站| 欧美黑吊大战白妞| 亚洲国产mv| 欧美中文字幕在线播放| 国产美女激情视频| 人人精品人人爱| 亚洲一区二区三区乱码aⅴ| 国产日韩欧美一区二区东京热| 国产精品一区久久久久| 99蜜桃在线观看免费视频网站| 性生交大片免费看女人按摩| 岛国一区二区在线观看| 欧美日本韩国国产| 天堂中文а√在线| 亚洲激情男女视频| 丰满爆乳一区二区三区| 亚洲伦理影院| 日韩欧美专区在线| chinese麻豆新拍video| 国产99久久精品一区二区300| 日韩中文字幕第一页| 欧美成人黄色网| 噜噜爱69成人精品| 国产美女主播一区| 狠狠躁夜夜躁av无码中文幕| 久久久99免费| 久久精品在线免费视频| а√天堂中文资源在线bt| 91官网在线免费观看| 久久精品国产99久久99久久久| gogo久久日韩裸体艺术| 亚洲香蕉av在线一区二区三区| 希岛爱理中文字幕| 久久精品午夜| 91久久爱成人| 国产精品ⅴa有声小说| 亚洲欧美激情插 | 亚洲色图27p| 黄色亚洲在线| 国产精品久久久久一区二区| www.com在线观看| 久久久久久97三级| 国产乱淫av片杨贵妃| 成人网ww555视频免费看| 日韩精品一区二区三区四区| 卡一卡二卡三在线观看| 国内揄拍国内精品久久| 国产精品日韩欧美大师| 天天综合网在线观看| 国产精品美女一区二区三区| 你真棒插曲来救救我在线观看| 成人久久网站| 亚洲免费伊人电影在线观看av| 久久嫩草捆绑紧缚| 麻豆精品91| 国产精品久久精品国产 | 久久国产精品久久久久久| 毛片基地在线观看| 盗摄精品av一区二区三区| 樱花www成人免费视频| 在线播放高清视频www| 精品日韩成人av| wwwav国产| 美日韩一区二区三区| 欧美日韩国产不卡在线看| 色婷婷视频在线观看| 91精品久久久久久蜜臀| 538精品视频| 丝袜亚洲精品中文字幕一区| 国产精品视频免费一区二区三区| 超碰porn在线| 欧美精品一二三四| 男人天堂资源网| 日本系列欧美系列| 日本三级中国三级99人妇网站| 欧美极品videos大乳护士| 精品久久一区二区三区| 老妇女50岁三级| 国产一区二区三区四区五区入口 | 99久久亚洲精品| 国产精品十八以下禁看| 国产精品二线| 欧美伊人久久大香线蕉综合69| 受虐m奴xxx在线观看| 噜噜噜91成人网| 欧美精品尤物在线| 欧美大电影免费观看| 亚洲男人第一网站| 性色av免费观看| 国产视频一区在线观看| www.xxx亚洲| 色无极亚洲影院| 国产日产欧美精品| 91精品国产91久久久久久青草| 欧美高清精品3d| 农村妇女精品一区二区| 成人午夜av在线| 91专区在线观看| 亚洲色图美女| 国产精品久久国产精品99gif| 成人午夜在线观看视频| 欧美日韩国产综合久久| 99自拍视频在线| 国产精品资源站在线| 国产激情在线看| 久久影院资源站| 全球成人中文在线| 午夜看片在线免费| 欧美一区二区三区在线看| 黄页网站免费观看| 91毛片在线观看| 一区二区三区 欧美| 亚洲草久电影| 韩国成人动漫在线观看| 成人在线爆射| 久久精品国产亚洲| 农村少妇久久久久久久| 色哟哟国产精品免费观看| 香蕉成人在线视频| 国产99精品在线观看| 91九色在线观看视频| 日韩精品诱惑一区?区三区| 亚洲综合中文字幕68页| 日本不卡1234视频| 日韩亚洲欧美中文高清在线| 国产露脸国语对白在线| 岛国精品视频在线播放| 五月天婷婷丁香网| 成人免费视频caoporn| 中文久久久久久| 狠狠噜噜久久| 亚洲国产精品视频一区| 国产精品网站在线看| 国产精品嫩草视频| 538视频在线| 主播福利视频一区| 天堂在线观看av| 欧美久久久久中文字幕| 五月天综合激情网| 亚洲免费资源在线播放| 性欧美丰满熟妇xxxx性仙踪林| 国产在线精品免费| 亚洲爆乳无码专区| 欧美另类女人| 中文字幕在线亚洲精品 | 精品福利一区二区三区免费视频| 欧美一区二区三区网站| 一区二区三区四区五区视频在线观看| 成人片黄网站色大片免费毛片| 国产伦精品一区二区三区免费迷| 无码少妇一区二区三区芒果| 最新日韩欧美| 中文字幕の友人北条麻妃| 九九热爱视频精品视频| 国产精品一区二区免费| 国产精品久久免费视频| 国产精品国产三级国产aⅴ9色 | 日本高清久久久| 奶水喷射视频一区| 免费毛片网站在线观看| 一区二区电影在线观看| 亚洲午夜久久久影院伊人| 一个色免费成人影院| 国产一区二区黄色| 亚洲综合网站| 91久久久久久久久久久| 粉嫩av一区二区三区四区五区| 欧美一二三视频| 91超碰国产在线| 欧美富婆性猛交| 亚洲淫性视频| 伦伦影院午夜日韩欧美限制| 欧美日韩在线看片| 深夜精品寂寞黄网站在线观看| 欧美巨乳在线| 国产网站欧美日韩免费精品在线观看| 黄色av免费观看| 精品国产乱码久久久久久图片| 国产深喉视频一区二区| 91精品国产91热久久久做人人 | 精品久久人人做人人爱| 国产成人av免费看| 欧美一区二区三区视频免费| 国产免费的av| 欧美一区在线视频| 99在线无码精品入口| 欧美一级淫片007| 精品黑人一区二区三区在线观看| 欧美一级一区二区| 国产xxxxxx| 亚洲国产高潮在线观看| 天堂av资源在线| 国产视频精品va久久久久久| 免费理论片在线观看播放老| 国产婷婷97碰碰久久人人蜜臀 | 欧美日韩午夜电影网| 999日本视频| 久久丝袜视频| 日本一区二区久久精品| 日韩精品中文字幕第1页| 一区二区三区欧美在线| 国产大片一区| 成人在线国产视频| 久久综合婷婷| 女同激情久久av久久| 国产成人综合在线观看| 在线观看国产免费视频| 久久久久久久久久久久久女国产乱| 男人的天堂av网| 亚洲免费观看视频| 国产成人无码一区二区三区在线| 日韩欧美国产网站| 一区二区不卡视频在线观看| 日韩一区二区免费电影| 午夜视频免费在线| 日韩在线精品视频| 女人天堂av在线播放| 日韩**中文字幕毛片| 欧美亚洲福利| 国产伦精品一区二区三区免费视频| 亚洲警察之高压线| 懂色av一区二区三区四区五区| 国产一区二区中文| 色哟哟精品视频| 国产精品一卡二| 在哪里可以看毛片| 最新国产成人在线观看| 久久久久久久久久免费视频 | 国产精品69页| 国产综合久久久久久鬼色| 精品国产一区在线| 国产精品久久久久久久浪潮网站| 久久免费精彩视频| 欧美日韩综合在线免费观看| 黄色成人一级片| 在线亚洲国产精品网| ririsao久久精品一区| 国产精品人人做人人爽| 国产精品一区二区三区美女| 亚洲一卡二卡三卡| 亚洲综合精品四区| 国内自拍偷拍视频| 中文字幕一区日韩精品欧美| 草久视频在线观看| 欧美一区二区三区啪啪| 国产福利在线视频| 国内精久久久久久久久久人| 日本wwww视频| 日韩二区三区四区| 小毛片在线观看| 亚洲美女免费在线| 成人黄色免费网| 精品一区精品二区| heyzo在线播放| 1卡2卡3卡精品视频| 日韩成人a**站| 精品99在线视频| 成人性生交大片免费看中文 | 久久av电影| 久久久久免费看黄a片app| 国产在线不卡视频| 一级免费黄色录像| 欧美中文字幕一区二区三区| 性猛交xxxx| 性亚洲最疯狂xxxx高清| 伊人久久影院| 成人免费看片视频在线观看| 美女视频黄久久| 四虎国产成人精品免费一女五男| 欧美性色19p| 亚洲人妻一区二区三区| 69久久夜色精品国产7777| 999在线精品| 999久久欧美人妻一区二区| 国产精品一区久久久久| 亚洲国产成人精品综合99| 欧美日本视频在线| 乱人伦中文视频在线| 国产视频999| 93在线视频精品免费观看| 美女网站色免费| 国产精品久久久久久久蜜臀 | 老妇喷水一区二区三区| 双性尿奴穿贞c带憋尿| 精品久久久久久久中文字幕| 性感美女一级片| 日韩免费观看视频| 精品久久久中文字幕| 丰满少妇在线观看| 欧美极品aⅴ影院| 亚洲在线视频播放| 成年无码av片在线| 在线观看视频一区二区三区| 日韩伦理在线免费观看| 99久久精品免费| 色屁屁影院www国产高清麻豆| 亚洲欧洲国产伦综合| 欧美影视资讯| 自拍另类欧美| 国产成人av福利| 日韩成人高清视频| 亚洲一区二区精品| 亚洲一区二区av| 无码日本精品xxxxxxxxx| av亚洲精华国产精华精华| 黄色在线视频网址| 日韩中文字幕第一页| 日韩在线网址| 国产精品va无码一区二区| 久久久久久99久久久精品网站| 一级α片免费看刺激高潮视频| 另类视频在线观看| 鲁大师精品99久久久| 欧美少妇性生活视频| 亚洲欧洲精品一区二区三区不卡| 精品久久久免费视频| 欧美性视频在线| 人人狠狠综合久久亚洲婷| 伦伦影院午夜理论片| 精品动漫一区二区| 日本不卡视频| 狠狠色狠狠色综合人人| 蜜桃精品在线观看| 国产亚洲精品久久久久久打不开 | 白丝女仆被免费网站| 精品视频全国免费看| 成人女同在线观看| 色女人综合av| 成人小视频在线| 在线免费观看中文字幕| 久久青草福利网站|