【鸿蒙学习】HarmonyOS应用开发者基础 - 从网络获取数据


学完时间:2024年8月15日

一、前言叨叨

学习HarmonyOS的第七课,人数居然反超到了3735名了,难道前面的那一课,这么多人挂科了吗。不过这一节的内容稍微简单一些,都是网络相关知识。

<HarmonyOS第一课>从网络获取数据

二、HTTP请求

1. HTTP

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是互联网上数据交换的基础,定义了客户端(用户设备)和服务器(网站主机)之间请求和响应的格式。HTTP最初由蒂姆·伯纳斯-李在1989年发明,用于在万维网上传输超文本文档,现在已经成为互联网上最广泛使用的协议之一。

HTTP的工作原理相对简单:客户端通过发送一个HTTP请求到服务器,服务器接收请求并用包含资源的HTTP响应进行回复。这个过程通常涉及以下步骤:

    1. 连接建立 :
      客户端通过TCP协议与服务器建立连接,通常使用默认端口80(对于HTTP)或443(对于HTTPS,即HTTP的安全版本)。
    1. 发送请求 :
      客户端向服务器发送一个HTTP请求,请求包含方法(如GET、POST、PUT、DELETE等)、目标资源的URL、协议版本以及可选的请求头和请求体。
    1. 服务器响应 :
      服务器处理请求并返回一个HTTP响应,响应包括状态码(如200表示成功,404表示未找到等)、响应头和响应体(通常是请求的资源,如HTML页面、图片等)。
    1. 连接关闭 :
      在交换完数据后,通常TCP连接会被关闭,但在HTTP/1.1中,可以保持连接打开,以便传输多个请求和响应,这种方式称为持久连接。

2. HTTPS

HTTPS:应用层协议,支持加密传输以及身份认证,保证数据的安全传输。与HTTP最大的区别是服务端与客户端之间进行数据传输都会经过TLS/SSL加密。

3. SSL和TLS

SSL :SSL(Secure Socket Layer)安全套接层是位于传输通信协议(TCP/IP)之上实现的一种安全协议。
TLS:TLS(Transport Layer Security)是一种安全协议,旨在实现数据加密传输。

TLS/SSL握手过程

应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。

在http模块中,多个请求可以使用同一个httpRequest对象,httpRequest对象是不可以复用。并且在使用完毕时,需要调用destory方法主动销毁HttpRequest对象销毁。

三、ArkTS创建HTTP数据请求

HTTP数据请求功能主要由http模块提供。

使用该功能需要申请ohos.permission.INTERNET 权限。具体参考 声明权限

request接口开发步骤

  • 从@kit.NetworkKit中导入http命名空间。
  • 调用createHttp()方法,创建一个HttpRequest对象。
  • 调用该对象的on()方法,订阅http响应头事件,此接口会比request请求先返回。可以根据业务需要订阅此消息。
  • 调用该对象的request()方法,传入http请求的url地址和可选参数,发起网络请求。
  • 按照实际业务需要,解析返回结果。
  • 调用该对象的off()方法,取消订阅http响应头事件。
  • 当该请求使用完毕时,调用destroy()方法主动销毁。

requestInStream接口开发步骤

  • 从@kit.NetworkKit中导入http命名空间。
  • 调用createHttp()方法,创建一个HttpRequest对象。
  • 调用该对象的on()方法,可以根据业务需要订阅HTTP响应头事件、HTTP流式响应数据接收事件、HTTP流式响应数据接收进度事件和HTTP流式响应数据接收完毕事件。
  • 调用该对象的requestInStream()方法,传入http请求的url地址和可选参数,发起网络请求。
  • 按照实际业务需要,可以解析返回的响应码。
  • 调用该对象的off()方法,取消订阅响应事件。
  • 当该请求使用完毕时,调用destroy()方法主动销毁。

四、ArkTS创建HTTPS请求

首先在HttpUtil.ets 中调用createHttp方法创建一个请求任务,再通过request方法发起网络请求。该方法支持三个参数:url、options以及callback回调,其中options可以设置请求方法、请求头以及超时时间等。

dart 复制代码
// HttpUtil.ets
import { http } from '@kit.NetworkKit';
import CommonConstant from '../constant/CommonConstants';
export default async function httpGet(url: string) {
  if (!url) {
    return undefined;
  }
  let request = http.createHttp();

  let result = await request.request(url, {
    method: http.RequestMethod.GET,
    header: { 'Content-Type': 'application/json' },
    readTimeout: CommonConstant.READ_TIMEOUT,
    connectTimeout: CommonConstant.CONNECT_TIMEOUT
  });
  return result;
}

接着在入口页面中调用上述封装的httpGet方法请求指定网址,将请求得到的内容嵌入到Web组件中。

相关推荐
贾伟康9 小时前
【化学实验室|17】HarmonyOS ArkTS 亮暗色与视觉令牌实战:集中颜色、间距和交互状态避免页面割裂
前端·移动开发·harmonyos·arkts·arkui
Canmag 兴隆磁性9 小时前
中大型钕铁硼产品的磁通测量与自动分选:一条产线自动化的工程实现思路
运维·学习·自动化·永磁材料
小黄人软件11 小时前
桌面需要整理吗?有工具自动分类
学习
老衲不用@飘柔12 小时前
SFP与SFP+学习知识整理
学习
X54先生(人文科技)12 小时前
社会嵌入式终身学习机器与修复时代-ELR架构和技术演化探讨
人工智能·深度学习·学习·架构·开源协议
g3voip12 小时前
工业防水电话到底怎么选?隧道、管廊与码头的需求差异
服务器·网络·信息与通信·ip
电子云与长程纠缠13 小时前
UE5魂系游戏开发教程05
开发语言·学习·游戏·ui·ue5
珠海西格电力13 小时前
零碳园区管理系统的性能评估体系的行业标准
大数据·网络·人工智能·物联网·机器学习·架构·能源
syagain_zsx13 小时前
BRpc 二次封装:Channel 管理、服务管理与回调工厂
c++·学习·程序人生·rpc·谷歌
贾伟康13 小时前
【化学实验室|18】HarmonyOS ArkTS 权限与隐私实战:让 module.json5、功能说明和拒绝路径一致
安全·移动开发·harmonyos·arkts·arkui