【鸿蒙学习】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组件中。

相关推荐
FF2501_9402285817 分钟前
HarmonyOS应用开发实战:猫猫大作战-AVPlayer 音视频播放
harmonyos·鸿蒙
oier_Asad.Chen22 分钟前
【洛谷题解/AcWing题解】洛谷P4011 孤岛营救问题/AcWing1131拯救大兵瑞恩
数据结构·笔记·学习·算法·动态规划·图论·宽度优先
xxwl5851 小时前
Git 完整学习笔记:从入门到团队协作
笔记·git·学习
minglie11 小时前
zynq的xlnx_rebase_v5.4_2020.2分支打patch-5.4.3-rt1.patch.xz补丁
学习
你怎么知道我是队长1 小时前
计算机虚拟存储管理与页面置换算法详解
服务器·网络·算法
达子6662 小时前
第17章_HarmonyOs开发图解之 媒体会话管理
华为·harmonyos·媒体
醉城夜风~2 小时前
HTML常用标签详解学习博客:从基础标签到页面结构完整掌握
前端·学习·html
发量惊人的中年网工2 小时前
工业视觉云边 AI 推理总是卡顿?SD-WAN 打通边缘算力互联
网络·人工智能·网络安全·云计算
AC赳赳老秦2 小时前
软著公开信息批量采集:OpenClaw 抓取软件著作权公开数据,分析企业技术布局方向
大数据·网络·人工智能·python·php·deepseek·openclaw
liuyunshengsir3 小时前
perftest 工具集ib_write_bw中的 RDMA Write 带宽测试工具手册
网络·rdma