当前位置:网站首页>基于ArkUI eTS开发的坚果笑话(NutJoke)
基于ArkUI eTS开发的坚果笑话(NutJoke)
2022-07-27 09:08:00 【华为云】
都说笑一笑十年少,确实,在生活中,我们也是很久没有笑了,那么今天,我就做一个鸿蒙eTS版的坚果笑话App,
实现的功能:
获取接口数据
笑话列表
笑话详情页
你能学到的有:
网络请求
可滚动组件
容器组件
路由跳转
文件结构
.├── config.json├── ets│ └── MainAbility│ ├── app.ets│ ├── common│ │ └── RealtimeWeather.ets│ ├── data│ │ └── get_test.ets│ ├── model│ │ ├── jokeDetailModel.ets│ │ └── jokeModel.ets│ └── pages│ ├── Main.ets│ └── jokeDetails.ets└── resources ├── base │ ├── element │ │ ├── color.json │ │ └── string.json │ └── media │ └── icon.png └── rawfile效果预览:



笑话大全接口
我们用到的接口:
接口地址:http://v.juhe.cn/joke/content/list.php
返回格式:json
请求方式:http get
请求示例:http://v.juhe.cn/joke/content/list.php?key=您申请的KEY&page=2&pagesize=10&sort=asc&time=1418745237
接口备注:根据时间戳返回该时间点前或后的笑话列表
请求参数说明:
| 名称 | 必填 | 类型 | 说明 | |
|---|---|---|---|---|
| sort | 是 | string | 类型,desc:指定时间之前发布的,asc:指定时间之后发布的 | |
| page | 否 | int | 当前页数,默认1,最大20 | |
| pagesize | 否 | int | 每次返回条数,默认1,最大20 | |
| time | 是 | string | 时间戳(10位),如:1418816972 | |
| key | 是 | string | 在个人中心->我的数据,接口名称上方查看 |
返回参数说明:
| 名称 | 类型 | 说明 | |
|---|---|---|---|
| error_code | int | 返回码 | |
| reason | string |
JSON返回示例
{ "error_code": 0, "reason": "Success", "result": { "data": [ { "content": "有一天晚上我俩一起吃西瓜,老大把西瓜籽很整洁的吐在了一张纸上,\r\n过了几天,我从教室回但宿舍看到老大在磕瓜子,\r\n我就问他:老大,你什么时候买的瓜子?\r\n老大说:刚晒好,说着抓了一把要递给我……", "hashId": "bcc5fdc2fb6efc6db33fa242474f108a", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": ""我女朋友气跑了"\r\n"怎么回事?严重吗?你怎么着她了?"\r\n"不严重,我只是很久没用了"", "hashId": "03a6095c18e1d6fe7e2c19b2a20d03d1", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "还说神马来一场说走就走的旅行,\r\n工作后就连一场说走就走的下班都不行。", "hashId": "10edf75c1e7d0933c91f0f39a28a2c84", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "高速路上堵车,路边葡萄地里有一哥们竟然在偷葡萄,心想太没素质了吧!\r\n不管了我也去,刚溜进葡萄地,那哥们竟问我干嘛,\r\n我撇了一眼反问道你干嘛呢?\r\n那哥们答道摘葡萄呢!\r\n我答道:我也摘葡萄呢!\r\n哥们郁闷了说我摘我家的你呢?\r\n我顿时脸红,哥你家葡萄咋卖呢?", "hashId": "bb572bb5b4844badb31012983f7324f5", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "和老婆在街边散步,我手上捏着一张已揉成一团的传单,\r\n走了好一会终于看到个垃圾桶,我赶紧跑过去想扔掉,\r\n没想到老婆从后边一把拉住我说:老公,那个肯定吃不得了,别捡。\r\n我一愣,发现垃圾桶顶盖上放着半个西瓜。", "hashId": "7ebccd3bbfaf24e010f9eb3ee68234bd", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "某考生考了个倒数第一,回到家被他爸一顿暴揍,\r\n来到学校老师让他谈谈落后的体会,\r\n学生:“我终于明白了“落后就要挨打”的道理。”", "hashId": "4aee2aa6a79c67682f605c4146a8eca4", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "很多人不喜欢朝九晚五的生活,然后开始创业。\r\n最终,他的生活变成了朝五晚九。", "hashId": "7b358c4b96cf4a8d82b85545ea8f9603", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "钱这个东西,真是害人精。\r\n小到人与人之间的矛盾,大到国家之间的战争,无不是为了钱。\r\n钱可以把人推上万众瞩目之颠,也可以使人瞬间变成阶下囚。\r\n可是,富人们却没认识到,当钱几辈子花不完时,\r\n挣再多已经没有意义,还不如早日尽点社会责任,\r\n捐助给需要的人,求得个平安幸福。\r\n看到这个的有钱人们呐,你们什么时侯能捐我点啊!", "hashId": "94e18075f8c9c8211dfed5f8d6a62983", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "看到一句很好的名言:我们无法拉伸生命的长度,但是我们可以拓展生命的宽度。\r\n我觉得这句话太有道理了!\r\n意思就是:虽然我们无法再长高了,但是我们还可以继续长胖。", "hashId": "fd8e364a4c70d46e77c1610879748a9a", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "女生口中所说的“理工男好萌好棒好想嫁!”,\r\n其实理工男是指“会修电脑、会设置手机、会安家用电器、\r\n会帮做PPT打EXCEL表PS修图、话少、高冷、专一、不和乱七八糟的女生来往、\r\n不爱打扮却又干净清爽、高高瘦瘦、手指纤长、戴黑框眼镜超好看的帅哥”。\r\n其实找个帅哥让他学电脑,再戴个眼镜就OK了。", "hashId": "5001c08a3cc8a281b15c467bc15a4911", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" } ] }}接下来,我们开始今天的实战,首先创建一个项目NutJoke

点击下一步

因为我们要网络请求
所以我们需要在config.json中配置网络请求权限
网络请求的步骤
1、声明网络请求权限
在entry下的config.json中module字段下配置权限
"reqPermissions": [ { "name": "ohos.permission.INTERNET" }]2、支持http明文请求
默认支持https,如果要支持http,在entry下的config.json中deviceConfig字段下配置
"deviceConfig": {"default": { "network": { "cleartextTraffic": true } }},3、创建HttpRequest
// 导入模块import http from '@ohos.net.http';// 创建HttpRequest对象let httpRequest = http.createHttp();4、发起请求
GET请求(默认为GET请求)
// 请求方式:GET getRequest() { // 每一个httpRequest对应一个http请求任务,不可复用 let httpRequest = http.createHttp() let url = 'https://devapi.qweather.com/v7/weather/now?location=101010100&key=48fbadf80bbc43ce853ab9a92408373e' httpRequest.request(url, (err, data) => { if (!err) { if (data.responseCode == 200) { console.info('=====data.result=====' + data.result) // 解析数据 //this.content= data.result; // 解析数据 var weatherModel: WeatherModel = JSON.parse(data.result.toString()) // 判断接口返回码,0成功 if (weatherModel.code == 200) { // 设置数据 this.realtime = weatherModel.now this.isRequestSucceed = true; console.info('=====data.result===this.content==' + weatherModel.now) } else { // 接口异常,弹出提示 prompt.showToast({ message: "数据请求失败" }) } } else { // 请求失败,弹出提示 prompt.showToast({ message: '网络异常' }) } } else { // 请求失败,弹出提示 prompt.showToast({ message: err.message }) } })}5、解析数据(简单示例)
1.网络请求到的json字符串
export function getTest() { return [ { "content": "有一天晚上我俩一起吃西瓜,老大把西瓜籽很整洁的吐在了一张纸上,\r\n过了几天,我从教室回但宿舍看到老大在磕瓜子,\r\n我就问他:老大,你什么时候买的瓜子?\r\n老大说:刚晒好,说着抓了一把要递给我……", "hashId": "bcc5fdc2fb6efc6db33fa242474f108a", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": ""我女朋友气跑了"\r\n"怎么回事?严重吗?你怎么着她了?"\r\n"不严重,我只是很久没用了"", "hashId": "03a6095c18e1d6fe7e2c19b2a20d03d1", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "还说神马来一场说走就走的旅行,\r\n工作后就连一场说走就走的下班都不行。", "hashId": "10edf75c1e7d0933c91f0f39a28a2c84", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "高速路上堵车,路边葡萄地里有一哥们竟然在偷葡萄,心想太没素质了吧!\r\n不管了我也去,刚溜进葡萄地,那哥们竟问我干嘛,\r\n我撇了一眼反问道你干嘛呢?\r\n那哥们答道摘葡萄呢!\r\n我答道:我也摘葡萄呢!\r\n哥们郁闷了说我摘我家的你呢?\r\n我顿时脸红,哥你家葡萄咋卖呢?", "hashId": "bb572bb5b4844badb31012983f7324f5", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "和老婆在街边散步,我手上捏着一张已揉成一团的传单,\r\n走了好一会终于看到个垃圾桶,我赶紧跑过去想扔掉,\r\n没想到老婆从后边一把拉住我说:老公,那个肯定吃不得了,别捡。\r\n我一愣,发现垃圾桶顶盖上放着半个西瓜。", "hashId": "7ebccd3bbfaf24e010f9eb3ee68234bd", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "某考生考了个倒数第一,回到家被他爸一顿暴揍,\r\n来到学校老师让他谈谈落后的体会,\r\n学生:“我终于明白了“落后就要挨打”的道理。”", "hashId": "4aee2aa6a79c67682f605c4146a8eca4", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "很多人不喜欢朝九晚五的生活,然后开始创业。\r\n最终,他的生活变成了朝五晚九。", "hashId": "7b358c4b96cf4a8d82b85545ea8f9603", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "钱这个东西,真是害人精。\r\n小到人与人之间的矛盾,大到国家之间的战争,无不是为了钱。\r\n钱可以把人推上万众瞩目之颠,也可以使人瞬间变成阶下囚。\r\n可是,富人们却没认识到,当钱几辈子花不完时,\r\n挣再多已经没有意义,还不如早日尽点社会责任,\r\n捐助给需要的人,求得个平安幸福。\r\n看到这个的有钱人们呐,你们什么时侯能捐我点啊!", "hashId": "94e18075f8c9c8211dfed5f8d6a62983", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "看到一句很好的名言:我们无法拉伸生命的长度,但是我们可以拓展生命的宽度。\r\n我觉得这句话太有道理了!\r\n意思就是:虽然我们无法再长高了,但是我们还可以继续长胖。", "hashId": "fd8e364a4c70d46e77c1610879748a9a", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" }, { "content": "女生口中所说的“理工男好萌好棒好想嫁!”,\r\n其实理工男是指“会修电脑、会设置手机、会安家用电器、\r\n会帮做PPT打EXCEL表PS修图、话少、高冷、专一、不和乱七八糟的女生来往、\r\n不爱打扮却又干净清爽、高高瘦瘦、手指纤长、戴黑框眼镜超好看的帅哥”。\r\n其实找个帅哥让他学电脑,再戴个眼镜就OK了。", "hashId": "5001c08a3cc8a281b15c467bc15a4911", "unixtime": 1418814837, "updatetime": "2014-12-17 19:13:57" } ]}2.创建相应的对象
export class JokeDetailData { content: string // 内容 hashId: string // 哈希值 unixtime: number // updatetime: string //更新时间}import { JokeDetailData } from './jokeDetailModel';export class JokeModel { reason: string //返回说明 error_code: number //返回码,0为查询成功 result: { data: Array<JokeDetailData> // 笑话 }}参考文档
项目地址
-
边栏推荐
- 【ACL2020】一种新颖的成分句法树序列化方法
- 【进程间通信IPC】- 信号量的学习
- 苹果降价600元,对本就溃败的国产旗舰手机几乎是毁灭性打击
- 2040: [Blue Bridge Cup 2022 preliminary] bamboo cutting (priority queue)
- Understand various IOU loss functions in target detection
- Low cost, low threshold, easy deployment, a new choice for the digital transformation of 48 million + small and medium-sized enterprises
- CUDA Programming -03: thread level
- Horse walking oblique sun (backtracking method)
- Unity3d 2021 software installation package download and installation tutorial
- npm install报错 强制安装
猜你喜欢

对 int 变量赋值的操作是原子的吗?

Activation functions commonly used in deep learning

async/await的执行顺序以及宏任务和微任务
![[acl2020] a novel method of component syntax tree serialization](/img/24/b8ec489966f7b1deef82b2eefa4d1b.png)
[acl2020] a novel method of component syntax tree serialization

CUDA programming-01: build CUDA Programming Environment

Digital intelligence innovation

Ctfshow ultimate assessment

pollFirst(),pollLast(),peekFirst(),peekLast()

5G没能拉动行业发展,不仅运营商失望了,手机企业也失望了

Restful
随机推荐
8 kinds of visual transformer finishing (Part 2)
Deep understanding of Kalman filter (2): one dimensional Kalman filter
String type and bitmap of redis
PVT的spatial reduction attention(SRA)
pollFirst(),pollLast(),peekFirst(),peekLast()
HUAWEI 机试题:火星文计算 js
Matlab求解微分代数方程 (DAE)
【每日算法Day 94】经典面试题:机器人的运动范围
NIO this.selector.select()
对 int 变量赋值的操作是原子的吗?
微信安装包从0.5M暴涨到260M,为什么我们的程序越来越大?
NiO example
Aruba learning notes 10 security authentication portal authentication (web page configuration)
Is the operation of assigning values to int variables atomic?
Matlab uses m file to produce fuzzy controller
Kibana uses JSON document data
数智革新
Huawei machine test question: String transformation minimum string JS
The wechat installation package has soared from 0.5m to 260m. Why are our programs getting bigger and bigger?
js call和apply