在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

深入淺出學習eTs之在線翻譯功能實現(xiàn)

Harmony&嵌入式學習 ? 來源:Harmony&嵌入式學習 ? 作者:Harmony&嵌入式學 ? 2023-05-13 13:30 ? 次閱讀

一、需求分析

本章節(jié)我們來制作中文翻譯成英文的實例(運行在HarmonyOS上),通過HTTP去配合API進行實現(xiàn)。

文字輸入

HTTP協(xié)議使用

文字翻譯

二、控件介紹

(1)HTTP數(shù)據(jù)請求官方文檔

wKgaomRfIIWAGdfDAAC-SVKx4ng981.png

請求行:代表使用POST或者GET

請求頭:主要的一些設定參數(shù)

請求體:數(shù)據(jù)

場景介紹

應用通過HTTP發(fā)起一個數(shù)據(jù)請求,支持常見的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。

接口說明

HTTP數(shù)據(jù)請求功能主要由http模塊提供。

使用該功能需要申請ohos.permission.INTERNET權限。

權限申請請參考訪問控制(權限)開發(fā)指導。

涉及的接口如下表,具體的接口說明請參考API文檔。

接口名 功能描述
createHttp() 創(chuàng)建一個http請求。
request() 根據(jù)URL地址,發(fā)起HTTP網(wǎng)絡請求。
destroy() 中斷請求任務。
on(type: ‘headersReceive’) 訂閱HTTP Response Header 事件。
off(type: ‘headersReceive’) 取消訂閱HTTP Response Header 事件。

使用例程

import http from '@ohos.net.http';

// 每一個httpRequest對應一個http請求任務,不可復用
let httpRequest = http.createHttp();

// 用于訂閱http響應頭,此接口會比request請求先返回。可以根據(jù)業(yè)務需要訂閱此消息
// 從API 8開始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
httpRequest.on('headersReceive', (header) => {
    console.info('header: ' + JSON.stringify(header));
});

httpRequest.request(
    // 填寫http請求的url地址,可以帶參數(shù)也可以不帶參數(shù)。URL地址需要開發(fā)者自定義。請求的參數(shù)可以在extraData中指定
    "EXAMPLE_URL",
    {
        method: http.RequestMethod.POST, // 可選,默認為http.RequestMethod.GET
        // 開發(fā)者根據(jù)自身業(yè)務需要添加header字段
        header: {
            'Content-Type': 'application/json'
        },
        // 當使用POST請求時此字段用于傳遞內(nèi)容
        extraData: {
            "data": "data to send",
        },
        connectTimeout: 60000, // 可選,默認為60s
        readTimeout: 60000, // 可選,默認為60s
    }, (err, data) => {
        if (!err) {
            // data.result為http響應內(nèi)容,可根據(jù)業(yè)務需要進行解析
            console.info('Result:' + data.result);
            console.info('code:' + data.responseCode);
            // data.header為http響應頭,可根據(jù)業(yè)務需要進行解析
            console.info('header:' + JSON.stringify(data.header));
            console.info('cookies:' + data.cookies); // 8+
        } else {
            console.info('error:' + JSON.stringify(err));
            // 該請求不再使用,調(diào)用destroy方法主動銷毀。
            httpRequest.destroy();
        }
    }
);

復制

(2)輸入框官方文檔

wKgZomRfIIaAZYD5AANekWNZknU733.gif

 TextInput({ placeholder: 'input your word...', controller: this.controller })
        .placeholderColor(Color.Grey)
        .placeholderFont({ size: 14, weight: 400 })
        .caretColor(Color.Blue)
        .width(400)
        .height(40)
        .margin(20)
        .fontSize(14)
        .fontColor(Color.Black)
        .onChange((value: string) => {
          this.text = value
        })

復制

三、UI設計

(1)輸入框

首先創(chuàng)建變量,作為輸入框的控制器,并且創(chuàng)建一個string數(shù)組,用來接收輸入框中的變量

@State IN_Value: string = '' 
controller: TextInputController = new TextInputController()

復制

此時屏幕中出現(xiàn)一個輸入框

wKgaomRfIIaAIG8CAABL7f6DsOE048.png

(2)按鈕

wKgZomRfIIeAUaZGAABc894-fz0518.png

        Button('翻  譯')
          .width('60%')
          .height(60)
          .fontSize(30)

復制

(3)顯示框

wKgaomRfIIeAZy4AAABoc7qztgk350.png

在這里把要輸出的幅值給TEXT

        Text(this.Out_Value)
          .fontSize(25)
          .width('80%')
          .height(100)
          .textAlign(TextAlign.Center)
          .border({ width: 1 })

復制

四、功能設計

(1)聯(lián)網(wǎng)權限

wKgZomRfIIiATKvwAAI_GLo0YRo770.png

(2)HTTP功能

先把最基本的實現(xiàn),包括包的導入,基本函數(shù)的創(chuàng)建

import http from '@ohos.net.http';


// 每一個httpRequest對應一個http請求任務,不可復用
let httpRequest = http.createHttp();


// 用于訂閱http響應頭,此接口會比request請求先返回。可以根據(jù)業(yè)務需要訂閱此消息
// 從API 8開始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
httpRequest.on('headersReceive', (header) => {


});

復制

再編寫功能模塊

            httpRequest.request(
              // 填寫http請求的url地址,可以帶參數(shù)也可以不帶參數(shù)。URL地址需要開發(fā)者自定義。請求的參數(shù)可以在extraData中指定
              "http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=" + this.IN_Value,
              {
                method: http.RequestMethod.GET, // 可選,默認為http.RequestMethod.GET
                connectTimeout: 60000, // 可選,默認為60s
                readTimeout: 60000, // 可選,默認為60s
              }, (err, data) => {
              if (!err) {
                // data.result為http響應內(nèi)容,可根據(jù)業(yè)務需要進行解析

                var Get_Return = data.result.toString()
                var Begin_Num =  Get_Return.indexOf('"tgt":"')
                var Last_Num = Get_Return.lastIndexOf('"}')
                var Get_char = Get_Return.substring(Begin_Num+7,Last_Num)
                console.log(JSON.stringify(Get_char));
                this.Out_Value = Get_char

                //console.log('hello world'.lastIndexOf('o'));



              } else {
                // 該請求不再使用,調(diào)用destroy方法主動銷毀。
                httpRequest.destroy();
              }
            }
            );

復制

(3)數(shù)據(jù)處理函數(shù)

1、substring()

console.log('JavaScript'.substring(0, 4)); // "Java"
console.log('JavaScript'.substring(4)) // "Script"

復制

用于從原字符串取出子字符串并返回,不改變原字符串,跟slice方法很相像。它的第一個參數(shù)表示子字符串的開始位置,第二個位置表示結(jié)束位置(返回結(jié)果不含該位置

2、indexOf()

console.log('hello world'.indexOf('o')); // 4
console.log('JavaScript'.indexOf('script')); // -1

復制

用于確定一個字符串在另一個字符串中 第一次出現(xiàn) 的位置,返回結(jié)果是匹配開始的位置。如果返回-1,就表示不匹配

3、lastIndexOf()

console.log('hello world'.lastIndexOf('o')); // 7

復制

從尾部開始遇到的第一次出現(xiàn)的位置,這個位置的返回結(jié)果是 從左邊開始算起,而不是從右邊開始算起。

五、程序驗證

wKgaomRfIImAGmU8AALnHgoJeRQ475.gif

如上圖所示,已經(jīng)實現(xiàn)了翻譯功能,在下個章節(jié)會加入翻譯后發(fā)音功能
編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1511

    瀏覽量

    62396
  • HTTP
    +關注

    關注

    0

    文章

    511

    瀏覽量

    31519
  • OpenHarmony
    +關注

    關注

    25

    文章

    3747

    瀏覽量

    16581
收藏 人收藏

    評論

    相關推薦

    #深入淺出學習eTs#(八)“猜大小”小游戲

    本項目Gitee倉地址:[深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發(fā)表于 05-17 15:08 ?1078次閱讀
    #<b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>#(八)“猜大小”小游戲

    #深入淺出學習eTs#(十)藍藥丸還是紅藥丸

    本項目Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發(fā)表于 05-17 15:07 ?1002次閱讀
    #<b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>#(十)藍藥丸還是紅藥丸

    深入淺出Android

    深入淺出Android
    發(fā)表于 08-20 10:14

    ARM7 深入淺出學習

    深入淺出ARM7 LPC213x_214 學習
    發(fā)表于 12-04 17:28

    深入淺出Android

    深入淺出Android
    發(fā)表于 04-26 10:48

    深入淺出排序學習使用指南

    深入淺出排序學習:寫給程序員的算法系統(tǒng)開發(fā)實踐
    發(fā)表于 09-16 11:38

    #深入淺出學習eTs#(一)模擬器/真機環(huán)境搭建

    本項目的Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com
    發(fā)表于 12-24 13:02

    #深入淺出學習eTs#(六)編寫eTs第一個控件

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 10:05

    #深入淺出學習eTs#(七)判斷密碼是否正確

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 10:06

    深入淺出Cortex-M0學習資料

    深入淺出Cortex-M0學習資料
    發(fā)表于 06-18 10:50 ?0次下載
    <b class='flag-5'>深入淺出</b>Cortex-M0<b class='flag-5'>學習</b>資料

    深入淺出學習250個通信原理資源下載

    深入淺出學習250個通信原理資源下載
    發(fā)表于 04-12 09:16 ?28次下載

    深入淺出學習低功耗藍牙協(xié)議棧

    深入淺出學習低功耗藍牙協(xié)議棧
    發(fā)表于 06-23 10:35 ?57次下載

    深入淺出學習eTs(一)模擬器/真機環(huán)境搭建

    本項目的Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com
    的頭像 發(fā)表于 05-13 13:17 ?1773次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>(一)模擬器/真機環(huán)境搭建

    深入淺出學習eTs(七)如何判斷密碼是否正確

    本項目Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發(fā)表于 05-13 13:20 ?958次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>(七)如何判斷密碼是否正確

    深入淺出學習eTs之九宮格密碼鎖功能實現(xiàn)

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發(fā)表于 05-13 13:25 ?1659次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>之九宮格密碼鎖<b class='flag-5'>功能</b><b class='flag-5'>實現(xiàn)</b>
    主站蜘蛛池模板: 一个人看aaaa免费中文 | 在线观看网址你懂得 | 91福利专区 | 亚洲 欧洲 日产 韩国在线 | 免费看大美女大黄大色 | 深夜大尺度视频在线观看 | 永久免费看mv网站入口 | 亚洲夜夜骑 | 久久久这里有精品999 | 78摸在线| 永久免费看 | 午夜性视频播放免费视频 | 日本人xxxxxxxxxⅹ68 | 美女毛片免费 | 日本成人免费在线视频 | 在线看片你懂得 | 国产卡1卡2卡三卡网站免费 | 能在线观看的一区二区三区 | 手机看片国产福利 | 黄色网址中文字幕 | 久久久精品久久久久久久久久久 | 一级特黄aaa大片在线观看视频 | 国产三级在线免费 | 202z国产高清日本在线播放 | 手机毛片在线 | 五月丁香 | 色天使亚洲| 三级黄网站 | 婷婷激情狠狠综合五月 | 人人插视频 | 美女扒尿口给男人桶到爽 | 一级毛片不收费 | 日韩免费高清一级毛片 | 嫩草网| 亚洲人成电影综合网站色 | 亚洲高清色图 | 国产激情电影综合在线看 | 成人在色线视频在线观看免费大全 | 1024你懂的国产欧美日韩在 | 欧美黑人巨大日本人又爽又色 | 天堂电影在线 |