【Harmony】SCU暑期实训鸿蒙开发学习日记Day2

目录

Git

参考文章

常用操作

ArkTS的网络编程 

Http编程

发送请求

GET

POST

处理响应

JSON数据解析

处理响应头

错误处理

Web组件

用生命周期钩子实现登录验证功能

思路

代码示例

解读


纯记录学习日记,杂乱,误点的师傅可以×掉了😋

学下Git相关💑,以Gitee为例

最后补充了点ArkTS网络编程相关知识(没新东西)🤬

Git

参考文章

Gitee上传代码保姆级教程(亲测有效)

超级详细的GitBash使用教程

 使用Gitee多人项目协作开发的流程实例

Git 使用 —Git基本指令的使用

常用操作

本地pull远程文件夹

git clone https://gitee.com/z3r4y/ctf.git

查看远程和本地分支映射关系

git branch -a

切换分支模式到develop

 

添加并命名远程仓库 

git remote add origin https://gitee.com/z3r4y/ctf.git

添加一个远程仓库,并将其命名为 origin。这个远程仓库的URL是 https://gitee.com/z3r4y/ctf.git,表示在Gitee平台上的一个仓库。 

 develop开发完成后push代码到develop的分支

1.推送前注明本次推送目的

git add . (.代表目录下所有文件)

git commit -m '本次提交的说明'(说明信息为必填项,最好是信息有意义,便于后期理解)

2.本地仓库推送至指定的远程仓库中

git push -u origin develop

 

ArkTS的网络编程 

所有语言的网络编程都差不多,ArkTS也没新东西

Http编程

发送请求

GET
import http from '@ohos.net.http';// 创建一个 HTTP 请求对象
let httpRequest = http.createHttp();// 发送 GET 请求
httpRequest.request({method: 'GET',url: 'https://jsonplaceholder.typicode.com/todos/1',header: {'Content-Type': 'application/json'}
}, (err, data) => {if (!err) {// 处理响应数据console.log('Response: ' + data.result);} else {// 处理错误console.error('Request failed: ' + err.message);}
});
POST
import http from '@ohos.net.http';// 创建一个 HTTP 请求对象
let httpRequest = http.createHttp();// 发送 POST 请求
httpRequest.request({method: 'POST',url: 'https://jsonplaceholder.typicode.com/posts',header: {'Content-Type': 'application/json'},data: JSON.stringify({title: 'foo',body: 'bar',userId: 1})
}, (err, data) => {if (!err) {// 处理响应数据console.log('Response: ' + data.result);} else {// 处理错误console.error('Request failed: ' + err.message);}
});

处理响应

JSON数据解析

大多数HTTP API返回的数据都是JSON格式的。解析JSON数据是处理响应的常见操作。

httpRequest.request({method: 'GET',url: 'https://jsonplaceholder.typicode.com/todos/1',header: {'Content-Type': 'application/json'}
}, (err, data) => {if (!err) {try {let jsonResponse = JSON.parse(data.result);console.log('Title: ' + jsonResponse.title);} catch (e) {console.error('Failed to parse JSON response: ' + e.message);}} else {console.error('Request failed: ' + err.message);}
});
处理响应头

有时候,需要检查和处理响应头中的信息。例如,获取内容类型或认证信息。

httpRequest.request({method: 'GET',url: 'https://example.com/api/data',header: {'Accept': 'application/json'}
}, (err, data) => {if (!err) {console.log('Content-Type: ' + data.header['Content-Type']);let jsonResponse = JSON.parse(data.result);console.log('Data: ', jsonResponse);} else {console.error('Request failed: ' + err.message);}
});
错误处理

在处理HTTP请求时,错误处理是一个关键部分。通过检查错误对象的属性,开发者可以确定错误的类型并采取相应的措施。

基本错误处理

示例

httpRequest.request({method: 'GET',url: 'https://jsonplaceholder.typicode.com/invalid-endpoint',header: {'Content-Type': 'application/json'}
}, (err, data) => {if (!err) {console.log('Response: ' + data.result);} else {console.error('Request failed: ' + err.message);}
});

根据HTTP状态码处理错误

根据不同的HTTP状态码,执行不同的错误处理逻辑。

示例

httpRequest.request({method: 'GET',url: 'https://jsonplaceholder.typicode.com/todos/1',header: {'Content-Type': 'application/json'}
}, (err, data) => {if (!err) {console.log('Response: ' + data.result);} else {switch (err.status) {case 404:console.error('Error 404: Resource not found');break;case 500:console.error('Error 500: Internal server error');break;default:console.error('Request failed with status: ' + err.status);}}
});

Web组件

直接看这个👇

WebAPI官方文档

用生命周期钩子实现登录验证功能

在ArkUI中,可以利用生命周期方法来实现一个登录身份状态验证的组件。通过在组件的初始化阶段检查用户的身份状态,并根据状态在UI上显示不同的内容或进行相应的跳转操作。

思路

  1. 初始化:在组件初始化时(onInit 方法),检查用户的身份状态。
  2. 身份验证:根据身份状态决定显示登录页面还是主页面。
  3. 资源清理:在组件销毁时(onDestroy 方法),清理资源。

代码示例

@Entry
@Component
struct LoginStatusComponent {@State isLoggedIn: boolean = false;onInit() {this.checkLoginStatus();}onDestroy() {this.cleanup();}checkLoginStatus() {// 假设有一个函数 isUserLoggedIn() 返回用户的登录状态this.isLoggedIn = isUserLoggedIn();if (!this.isLoggedIn) {this.redirectToLogin();}}redirectToLogin() {// 跳转到登录页面的逻辑router.push({url: 'pages/LoginPage'});}cleanup() {console.log('Cleaning up resources...');// 清理资源的逻辑}build() {if (this.isLoggedIn) {return this.buildMainPage();} else {return this.buildLoginPage();}}buildMainPage() {return Column() {Text("Welcome, User!").fontSize(30)Button("Logout").onClick(() => {this.logout();})}}buildLoginPage() {return Column() {Text("Please log in.").fontSize(30)Button("Log In").onClick(() => {this.login();})}}login() {// 模拟登录操作this.isLoggedIn = true;// 更新登录状态后重新检查this.checkLoginStatus();}logout() {// 模拟注销操作this.isLoggedIn = false;// 更新登录状态后重新检查this.checkLoginStatus();}
}// 假设是一个检查用户登录状态的函数
function isUserLoggedIn(): boolean {// 模拟一个登录检查return false; // 默认用户未登录
}

解读

  • onInit:在组件初始化时调用 checkLoginStatus 方法,检查用户的登录状态。
  • checkLoginStatus:使用 isUserLoggedIn 函数检查用户是否已登录。如果未登录,则调用 redirectToLogin 方法跳转到登录页面。
  • redirectToLogin:使用 router.push 方法跳转到登录页面。
  • onDestroy:在组件销毁时调用 cleanup 方法,清理资源。
  • build:根据用户的登录状态,决定显示主页面还是登录页面。
  • buildMainPagebuildLoginPage:分别构建主页面和登录页面的UI。
  • loginlogout:模拟登录和注销操作,并更新登录状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3247265.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

网络和安全操作

一、网络的介绍 1.编辑文件 文本编辑器有很多,比如图形模式的gedit、OpenOffice 等,文本模式下的编辑器有vi、vim(vi的增强版本)等。vi和vim是我们在Linux中最常用的编辑器。 gedit:类似于windows下的记事本&#xf…

【MATLAB第106期】#源码分享 | 基于MATLAB的有限差分算法的全局敏感性分析模型

【MATLAB第106期】#源码分享 | 基于MATLAB的有限差分法的全局敏感性分析模型 一、原理 有限差分法是一种数值方法,用于估计函数对输入参数的敏感性。在全局敏感性分析中,这种方法特别有用,因为它可以评估模型输出对所有输入参数变化的整体响…

stm32:CAN通讯

目录 介绍 协议层 CAN的 帧/报文 种类 数据帧 远程帧(遥控帧) 错误帧 过载帧 帧间隔 总线仲裁 stm32的CAN外设 工作模式 测试模式 功能框图 时序 标准时序 例子 环回静默模式测试 寄存器代码 HAL版本 介绍 一种功能丰富的车用总线标…

EasyExcel 学习之 导出 “WPS 表格在试图打开文件时遇到错误”

目录 1. 版本2. 现象2.1. Postman 文件下载成功且 WPS 可以正常打开2.2. VUE 下载成功但 WPS 无法打开 3. 原因:前端未指定 responseType4. 常见问题4.1. NoSuchMethodError4.1.1. org.apache.logging.log4j.LogBuilder org.apache.logging.log4j.Logger.atTrace()4.1.2. Could…

WebAssembly与JavaScript的交互(1)

前一阵子利用Balazor开发了一个NuGet站点,对WebAssembly进行了初步的了解,觉得挺有意思。在接下来的一系列文章中,我们将通过实例演示的方式介绍WebAssembly的一些基本概念和编程模式。首先我们先来说说什么是WebAssembly,它主要帮…

深入理解 Token:大模型为什么用token计费,token到底是什么东东

今天我们来聊聊一个你可能听说过,但可能不太了解的词——Token。在那些能聊天、写文章、甚至帮你做决定的智能大模型里,为什么都要用Token 来计费在这里插入图片描述 一、Token 是什么? 想象一下,你写了一封信,但不是…

若依前端和后端时间相差8小时

原因基类未设置时区 实体类继承 BaseEntity 加上timezone"GMT8" /** 创建时间 */ JsonFormat(pattern "yyyy-MM-dd HH:mm:ss" , timezone"GMT8") private Date createTime; 解决

网络安全(含面试题版)

一、网络概念 网络:一组相互连接的计算机,多台计算机组成,使用物理线路进行连接 作用: 数据交换 资源共享 二、网络分类 计算机网络覆盖的地理区域决定了它的类型。一般分为局域网(LAN)、城域网(MAN)、广域网(WAN)。 三、www万维网…

Android音视频—OpenGL 与OpenGL ES简述,渲染视频到界面基本流程

文章目录 OpenGL 简述特点和功能主要组件OpenGL ES当前状态 OpenGL ES 在 Android 上进行视频帧渲染总体流程 OpenGL 简述 OpenGL(Open Graphics Library)是一个跨平台的、语言无关的应用程序编程接口(API),用于开发生…

如何用AI交互数字人一体机,打造政务服务新名片?

如今,将“高效办成一件事”作为优化政务服务、提升行政效能的重要抓手,各地方为了促进政务服务由传统模式向数字化、智能化方向转变,纷纷在政务服务场景融合了AI交互数字人,实现“无人化、智慧化”导办、帮办、代办等模式&#xf…

redis缓存失效问题

缓存时效问题 缓存穿透 问题说明:指大量请求缓存中不存在的数据,导致这些请求都访问备用数据源(如数据库、外部服务等),从而引起系统资源浪费和性能问题。 解决方案:有“参数校验”、“缓存空值”、“布隆…

html 单页面引用vue3和element-plus

引入方式: element-plus基于vue3.0,所以必须导入vue3.0的js文件,然后再导入element-plus自身所需的js以及css文件,导入文件有两种方法:外部引用、下载本地使用 通过外部引用ElementPlus的css和js文件 以及Vue3.0文件 …

LG 选择 Flutter 来增强其智能电视操作系统 webOS

可以这个话题会让大多数人困惑,2024 年了为什么还会冒出 webOS 这种老古董?然后 LG 为什么选择 webOS ?现在为什么又选择 Flutter ? 其实早在 Google I/O 发布 Flutter 3.22 版本的时候,就提到了 LG 选择 Flutter 来增…

Postfix+Dovecot+Roundcube开源邮件系统搭建系列1-2:系统搭建目标+MariaDB数据库配置(MySQL)

1. 系统搭建目标 通过本系列文章,最终可以部署一套提供如下服务的邮件系统: SMTP服务:由Postfix提供,监听25、465、587端口。POP3服务:由Dovecot提供,监听110、995端口。IMAP服务:由Dovecot提…

el-table fixed固定列导致错位的解决方法介绍

问题描述: Element UI table组件可以通过设置fixedright属性实现列的固定,但是在某些情况下会导致固定列的样式错乱,只要刷新页面即出现表格错位问题,下面就总结下解决样式错乱实现方案 官方解决方案: 对 Table 进行重新布局。当 Table 或其…

安全防御:智能选路

目录 一、智能选路 1.1 就近选路 1.2 策略路由 1.3 虚拟系统---VRF 二、全局选路策略 1,基于链路带宽进行负载分担 2,基于链路质量进行负载分担 3,基于链路权重的负载分担 4,根据链路优先级的主备备份 DNS透明代理 一、…

vue执行npm install问题idealTree:yudao-ui-admin-vben: sill idealTree buildDeps

前言: 查看vue终端默认地址 npm config get registry 结果:https://registry.npmjs.org/问题: 在拉取芋道源码前端的时候执行npm install 遇到问题如下:一直卡着不动 查看版本 按照网上方法更换镜像为阿里的,仍然不…

ORA-00756 ORA-10567故障处理---惜分飞

数据库异常断电之后,recover 报ORA-00756 ORA-10567等错 SQL> recover database; ORA-00756: 恢复操作检测到数据块写入丢失 ORA-10567: Redo is inconsistent with data block (file# 1,block# 113855,file offset is 932700160 bytes) ORA-10564: tablespace S…

搜维尔科技:【研究】触觉技术将在5年内以8种方式改变人们的世界

触觉技术在过去几年中发展迅猛,大大提高了反馈的精确度和真实度。其应用产生了真正的影响,数百家公司和企业都集成了触觉技术来增强培训和研究模拟。 虽然触觉技术主要用于 B2B 层面,但触觉技术可能会彻底改变我们的生活,尤其是通…

多类支持向量机损失(SVM损失)

(SVM) 损失。SVM 损失的设置是,SVM“希望”每个图像的正确类别的得分比错误类别高出一定幅度Δ。 即假设有一个分数集合s[13,−7,11] 如果y0为真实值,超参数为10,则该损失值为 超参数是指在机器学习算法的训练过程中需要设置的参数&#xf…