赞
踩
在日常的开发过程中, 如果页面的数据都在本地的话, 那么整个页面将是完全写死的. 每次更新渲染的数据都需要重新发布, 这样是不符合整个的业务要求的. 所以使用Http模块来动态的请求数据, 完成可变动的数据展示, 是非常重要一个步骤.
在需要使用Http请求的地方, 我们需要对Http模块进行导入. 使用import关键字来导入鸿蒙内置的Http模块
import { http } from '@kit.NetworkKit'
当然, 如果你在项目中, 第一次使用Http请求进行数据交互, 那么需要在配置文件中进行网络权限的申请. 具体路径为: entry/src/main/module.json5
在module.json5文件中, module对象中添加以下片段:
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
完整代码参考:
{ "module": { "name": "entry", "type": "entry", "description": "$string:module_desc", "mainElement": "EntryAbility", "deviceTypes": [ "phone", "tablet", "2in1" ], "deliveryWithInstall": true, "installationFree": false, "pages": "$profile:main_pages", "abilities": [ { "name": "EntryAbility", "srcEntry": "./ets/entryability/EntryAbility.ets", "description": "$string:EntryAbility_desc", "icon": "$media:jizhangben", "label": "$string:EntryAbility_label", "startWindowIcon": "$media:startIcon", "startWindowBackground": "$color:start_window_background", "exported": true, "skills": [ { "entities": [ "entity.system.home" ], "actions": [ "action.system.home" ] } ], "exported": true, "skills": [ { "entities": [ "entity.system.home" ], "actions": [ "action.system.home" ] } ] }, { "name": "bookkeeping", "srcEntry": "./ets/bookkeeping/bookkeeping.ets", "description": "$string:bookkeeping_desc", "icon": "$media:avatar", "label": "$string:bookkeeping_label", "startWindowIcon": "$media:startIcon", "startWindowBackground": "$color:start_window_background", "exported": true, "skills": [ { "entities": [ "entity.system.home" ], "actions": [ "action.system.home" ] } ] } ], "requestPermissions": [ { "name": "ohos.permission.INTERNET" } ] } }
在导入Http模块的时候, 我们也可以选择对Http模块进行封装, 方便后面的数据请求复用. 提高代码的简洁度, 提高项目的可维护性.
封装代码示例:
因为是请求的首页数据, 所以选择在页面刚刚创建的时候发送请求, 也就是aboutToAppear
函数中进行Http请求.
因为Http请求是一个异步操作, 所以会返回一个Promise对象, 使用.then方法来接收将来返回的结果.
在then方法中 传入一个回调函数, 这个回调函数需要有一个形参用来接收将来Http请求返回过来的结果. 在回调函数内部, 对这个结果进行业务需要的数据处理.
aboutToAppear(): void {
http.createHttp().request(
"https://v1.hitokoto.cn/",
{
expectDataType: http.HttpDataType.OBJECT
}
)
.then(res => {
this.message = res.result as yiyan
})
}
import { http } from '@kit.NetworkKit'; interface yiyan { id: number; uuid: string; hitokoto: string; type: string; from: string; from_who: string; creator: string; creator_uid: number; reviewer: number; commit_from: string; created_at: string; length: number; } @Entry @Component struct Yiyan { @State message: yiyan | null = null; aboutToAppear(): void { http.createHttp().request( "https://v1.hitokoto.cn/", { expectDataType: http.HttpDataType.OBJECT } ) .then(res => { this.message = res.result as yiyan }) } build() { Row() { Column({ space: 10 }) { Column({ space: 20 }) { Text(this.message?.hitokoto || "还没有数据噢~") .width("80%") .fontSize(26) .fontWeight(FontWeight.Bold) Text(`--- ${this.message?.from}`) .alignSelf(ItemAlign.End) } Button("换一句") .width(120) .height(35) .backgroundColor("#00000000") .fontColor("#222") .fontWeight(400) .border({ width: 1 }) .onClick(() => { http.createHttp().request( "https://v1.hitokoto.cn/", { expectDataType: http.HttpDataType.OBJECT } ) .then(res => { this.message = res.result as yiyan }) }) } .width('100%') } .height('100%') } }
鸿蒙战略胜利,目前鸿蒙开发是一个急需要人才的缺口,在未来几年势必会有大量的鸿蒙岗位出现,目前所存在的鸿蒙岗位也是给出了相当高的薪资。事实证明,鸿蒙开发确实是一块香饽饽。作为华为自家的操作系统,正在逐步扩张市场份额。想要转行或者入行的朋友可以下手了。在这里,为大家提供一份我整理的鸿蒙开发学习资料,涵盖了UI开发、web、应用模型多个知识点,有需要的朋友可以扫描下方二维码,免费获取更多相关资料。
1、方舟开发框架(ArkUI)概述
2、基于ArkTS声明式开发范式
3、兼容JS的类Web开发范式
1、设置基本属性和事件
2、在应用中使用前端页面JavaScript
3、并发
4、…
1、应用模型概述
2、Stage模型开发指导
3、FA模型开发指导
1、快速入门
2、开发基础知识
3、资源分类与访问
4、学习ArkTs语言
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。