0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenHarmony趣味应用 OpenHarmony藏头诗应用

ArkUI详解 2022-07-13 09:20 次阅读

今天我们将做一个OpenHarmony趣味应用——OpenHarmony藏头诗应用,是通过AI接口来做。通过调用指定的AI接口来做,接口会返回藏头诗或者继续完成诗的后面几句。

我要实现的功能主要有:

生成藏头诗,

生成整首诗,

你能学到的有:

网络请求

可滚动组件

状态管理

常用组件

常用属性

修改应用名称和图标

在Config.json添加权限等

用到的接口:

接口:

https://py.myie9.com/hidepoem/坚果

请求方式:

Get

apipost请求测试

image-20220711081818157

接口:

https://py.myie9.com/xuxietest/汗滴禾下土

apipost请求测试:

image-20220711082102057

如何创建应用在这里不做解释。

首先预览一下应用

gif1

注意点:

允许https需要添加下面的配置

"deviceConfig": {

"default": {

"network": {

"cleartextTraffic": true

}

}

},

使用网络请求在config.json添加权限:

"reqPermissions": [

{

"name": "ohos.permission.INTERNET"

}

],

完整代码:

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

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

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

@Entry

@Component

struct Index {

@State tibetanContent: string = "坚果的小跟班";

@State tibetanInput: string = "跟着坚果学鸿蒙";

@State wholeContent: string = "";

@State wholeInput: string = "跟着坚果学鸿蒙";

private scroller: Scroller = new Scroller()

onCancel() {

console.info('关闭')

}

build() {

Scroll(this.scroller) {

Column({ space: 10 }) {

Text($r("app.string.title"))

.fontSize(26)

.fontWeight(FontWeight.Bold)

.align(Alignment.Start)

.margin({ top: 20 })

TextInput({ placeholder: '请输入要生成的内容', })

.fontSize(36)

.enterKeyType(EnterKeyType.Go)

.onChange((value) => {

this.tibetanInput = value;

})

.height(80)

.margin({

top: 40,

left: 16,

right: 16

})

Button("生成藏头诗").backgroundColor(Color.Pink)

.onClick(() => {

this.TibetanRequest();

})

Text(this.tibetanContent).fontSize(26).fontColor(Color.Orange)

TextInput({ placeholder: '请输入要生成的内容', })

.fontSize(36)

.enterKeyType(EnterKeyType.Go)

.onChange((value) => {

this.wholeInput = value;

})

.height(80)

.margin({

left: 16,

right: 16

})

Button("生成整首诗").backgroundColor(Color.Green)

.onClick(() => {

this.wholePoemRequest();

})

Text(this.wholeContent).fontSize(24).fontColor(Color.Orange)

}

.padding(10)

}

}

//藏头诗接口

private TibetanRequest() {

let httpRequest = http.createHttp();

httpRequest.request(

"https://py.myie9.com/hidepoem/" + this.tibetanInput,

{

method: RequestMethod.RequestMethod.GET,

readTimeout: 15000,

connectTimeout: 15000,

},

(error, data) => {

if (error) {

console.log("error code: " + error.code + ", msg: " + error.message)

} else {

let code = data.responseCode

if (ResponseCode.ResponseCode.OK == code) {

this.tibetanContent = data.result.toString();

let header = JSON.stringify(data.header);

console.log("result: " + this.tibetanContent);

console.log("header: " + header);

} else {

console.log("response code: " + code);

}

}

}

);

}

//整首诗接口

private wholePoemRequest() {

let httpRequest = http.createHttp();

httpRequest.request(

"https://py.myie9.com/xuxietest/" + this.wholeInput,

{

method: RequestMethod.RequestMethod.GET,

readTimeout: 15000,

connectTimeout: 15000,

},

(error, data) => {

if (error) {

console.log("error code: " + error.code + ", msg: " + error.message)

} else {

let code = data.responseCode

if (ResponseCode.ResponseCode.OK == code) {

this.wholeContent = data.result.toString();

let header = JSON.stringify(data.header);

console.log("result: " + this.wholeContent);

console.log("header: " + header);

} else {

console.log("response code: " + code);

}

}

}

);

}

}

发起网络请求

使用 @ohos.net.http 模块发起网络请求分为以下步骤:

引入http模块

import

http

from

'@ohos.net.http'

;

创建一个httpRequest

let

httpRequest

=

http

.

createHttp

();

发起http请求

httpRequest 提供了两种 request() 方法进行网络请求,分别是无 RequestOptions 参数的请求和有 RequestOptions 参数的请求。分别介绍如下:

RequestOptions 参数请求

  1. //藏头诗接口
    private TibetanRequest() {
    let httpRequest = http.createHttp();
    httpRequest.request(
    "https://py.myie9.com/hidepoem/" + this.tibetanInput,
    {
    method: RequestMethod.RequestMethod.GET,
    readTimeout: 15000,
    connectTimeout: 15000,
    },
    (error, data) => {
    if (error) {
    console.log("error code: " + error.code + ", msg: " + error.message)
    } else {
    let code = data.responseCode
    if (ResponseCode.ResponseCode.OK == code) {
    this.tibetanContent = data.result.toString();

    let header = JSON.stringify(data.header);
    console.log("result: " + this.tibetanContent);
    console.log("header: " + header);
    } else {
    console.log("response code: " + code);
    }

    }
    }

    );
    }

request() 方法默认采用 get 方式请求。

上述代码,重点是通过调用HTTP的AI接口,来获取生成接口返回的诗的内容,并显示在应用界面上。

修改应用描述信息

默认的应用描述信息,集中在config.json文件中。

image-20220711111409744

修改string.json内容如下:

"srcLanguage": "ets",

"srcPath": "MainAbility",

"icon": "$media:icon", //应用图标

"description": "$string:desc",

"label": "$string:title", //应用名称

"type": "page",

"visible": true,

"launchType": "standard"

这么有趣的应用就这样完成了,比起js开发方式,eTS是不是更为简单呢。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HarmonyOS
    +关注

    关注

    79

    文章

    1807

    浏览量

    29255
  • OpenHarmony
    +关注

    关注

    23

    文章

    3261

    浏览量

    15159
收藏 人收藏

    评论

    相关推荐

    浅谈兼容 OpenHarmony 的 Flutter

    OpenHarmony SIG 组织在 Gitee 开源了兼容 OpenHarmony 的 Flutter。该组织主要用于孵化 OpenHarmony 相关的开源生态项目。     ▲ 仓库地址
    的头像 发表于 02-02 15:22 249次阅读
    浅谈兼容 <b class='flag-5'>OpenHarmony</b> 的 Flutter

    OpenHarmony Meetup 2023北京站圆满举办

    点击蓝字 ╳ 关注我们 开源项目 OpenHarmony 是每个人的 OpenHarmonyOpenHarmony正当时”OpenHarmony Meetup 2023城市巡回活动
    的头像 发表于 11-28 21:10 381次阅读
    <b class='flag-5'>OpenHarmony</b> Meetup 2023北京站圆满举办

    OpenHarmony C++公共基础类库应用案例:HelloWorld

    1、程序简介该程序是基于OpenHarmony的C++公共基础类库的简单案例:HelloWorld。该应用案例已在OpenHarmony凌蒙派-RK3568开发板
    的头像 发表于 11-23 08:22 293次阅读
    <b class='flag-5'>OpenHarmony</b> C++公共基础类库应用案例:HelloWorld

    OpenHarmony C++公共基础类库应用案例:Thread

    1、程序简介该程序是基于OpenHarmony的C++公共基础类库的线程处理:Thread。该应用案例已在OpenHarmony凌蒙派-RK3568开发板
    的头像 发表于 11-23 08:22 411次阅读
    <b class='flag-5'>OpenHarmony</b> C++公共基础类库应用案例:Thread

    OpenHarmony技术大会 | OpenHarmony技术俱乐部分论坛嘉宾金句

    点击蓝字 ╳ 关注我们 开源项目 OpenHarmony 是每个人的 OpenHarmony 原文标题:OpenHarmony技术大会 | OpenHarmony技术俱乐部分论坛嘉宾金
    的头像 发表于 11-10 20:25 259次阅读

    议程直击 | 第二届OpenHarmony技术大会——OpenHarmony技术俱乐部分论坛

    点击蓝字 ╳ 关注我们 开源项目 OpenHarmony 是每个人的 OpenHarmony 原文标题:议程直击 | 第二届OpenHarmony技术大会——OpenHarmony技术
    的头像 发表于 11-01 09:25 257次阅读
    议程直击 | 第二届<b class='flag-5'>OpenHarmony</b>技术大会——<b class='flag-5'>OpenHarmony</b>技术俱乐部分论坛

    精彩预告 | OpenHarmony Meetup 2023 成都站抢先剧透

    点击蓝字 ╳ 关注我们 开源项目 OpenHarmony 是每个人的 OpenHarmony 原文标题:精彩预告 | OpenHarmony Meetup 2023 成都站抢先剧透 文章出处:【微信公众号:OpenAtom
    的头像 发表于 10-25 15:55 158次阅读
    精彩预告 | <b class='flag-5'>OpenHarmony</b> Meetup 2023 成都站抢先剧透

    OpenHarmony创新赛丨你无法拒绝参赛的N个理由

    点击蓝字 ╳ 关注我们 开源项目 OpenHarmony 是每个人的 OpenHarmony Attention,各位优秀开发者们看过来! OpenHarmony创新赛自启动报名至今,已经有近百
    的头像 发表于 10-20 02:00 256次阅读

    开鸿智谷亮相OpenHarmony Meetup深圳站!

    开源项目OpenHarmony是每个人的OpenHarmonyOpenHarmony正当时”OpenHarmonyMeetup2023城市巡回活动,旨在通过meetup线下交流形式,
    的头像 发表于 10-18 08:30 416次阅读
    开鸿智谷亮相<b class='flag-5'>OpenHarmony</b> Meetup深圳站!

    OpenHarmony竞赛训练营正式启动

    点击蓝字 ╳ 关注我们 开源项目 OpenHarmony 是每个人的 OpenHarmony OpenAtom OpenHarmony(简称“OpenHarmony”)竞赛训练营正式开
    的头像 发表于 10-07 21:10 365次阅读

    Qt For OpenHarmony

    本文转载自 OpenHarmony TSC 官方​《峰会回顾第29期 | Qt For OpenHarmony​​ 演讲嘉宾 | 蔡万苍 回顾整理 | 廖涛 排版校对 | 李萍萍 嘉宾简介 蔡万苍
    发表于 09-15 15:39

    OpenHarmony应用开发入门与基础课程_第二章-入门 _新建第一个OpenHarmony工程

    开发程序OpenHarmony
    OpenHarmony开发者
    发布于 :2023年08月22日 14:49:25

    OpenHarmony轻量系统书籍推荐《OpenHarmony轻量设备开发理论与实战》

    最近大家问的智能家居套件方面有没有可以参考的资料,这里给大家统一回复一下 推荐大家可以看这本书 《OpenHarmony轻量设备开发理论与实战》 本书系统地讲授OpenHarmony 轻量系统 设备
    的头像 发表于 07-20 12:43 664次阅读

    保姆级的OpenHarmony创新赛赋能直播课程来了!

    点击蓝字 ╳ 关注我们 开源项目 OpenHarmony 是每个人的 OpenHarmony 开放原子开源大赛OpenHarmony创新赛赋能直播 震撼来袭! 可视化应用开发基础讲解 游戏化的
    的头像 发表于 07-11 21:05 266次阅读
    保姆级的<b class='flag-5'>OpenHarmony</b>创新赛赋能直播课程来了!

    OpenHarmony版本发布计划

    OpenHarmony社区定期发布LTS/Release分支,并按照OpenHarmony生命周期管理策略提供维护和技术支持。
    的头像 发表于 05-19 12:35 559次阅读