HarmonyOS如何从网络中获取数据?

539 阅读5分钟

HarmonyOS开发中的网路请求其与iOS安卓等开发一样都是需要客户端给服务器端发送网络请求去获取数据,所以本篇就从网络请求的几种方法开始介绍。

一、 HTTP 请求方法介绍

方法描述
GET请求指定的页面信息,并返回实体主体。GET方法应该只用于数据的检索,而不应用于数据修改的操作,因为它会被缓存,可能会被保存在浏览器历史记录中,或者会被搜索引擎索引。 GET请求通常用于请求数据,并且不会修改服务器上的数据。GET请求的数据会附加在URL之后,并且长度有限制(通常受URL长度和服务器配置的限制)。 GET请求中传输的数据不应包含敏感信息,因为数据会在URL中显示。
POST向指定资源提交数据进行处理请求(例如提交表单或上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT从客户端向服务器传送的数据取代指定的文档的内容。类似于POST,但是PUT方法是幂等的,多次相同的PUT请求应该具有相同的效果。
DELETE请求服务器删除指定的资源。
HEAD类似于GET请求,但是服务器不会返回消息体。HEAD用于获取报文首部。
OPTIONS返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。
TRACE回显服务器收到的请求,主要用于测试或诊断。TRACE方法允许客户端查看请求在到达目的地之前经过的中间节点。
CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密通信。

特别说明

  • 幂等性:GET、HEAD、PUT、DELETE、TRACE 和 OPTIONS 是幂等的,这意味着多次执行同样的请求应当产生相同的结果,不会引起状态的改变。
  • 安全性:GET、HEAD、OPTIONS 和 TRACE 被认为是安全的,因为它们不会对服务器上的资源造成影响。
  • 缓存:GET 和 HEAD 请求可以被缓存,而POST请求通常不会被缓存。

二、网络请求功能的权限申请

在使用网络请求功能时需要先申请ohos.permission.INTERNET权限。具体配置位置是在module.json5配置文件的requestPermissions标签中声明权限。其他的权限申请请移步官网查看

三、网络请求的使用过程

Snip20240928_13.png

  • 1.导入http模块
import { http } from '@kit.NetworkKit'
  • 2.创建http请求
//创建数据请求对象
let httpRequest = http.createHttp();

注意: 每一个HttpRequest对象对应一个http请求。createHttp成功后,返回一个httpRequest对象,里面包括requests destroyx on和off方法。

  • 3.发起http请求

Snip20240928_14.png

上图中的EXAMPLE_URL 为网络请求的URL

  • 下图为网络请求中需要配置的一些参数

Snip20240928_15.png

  • 4.处理响应

Snip20240928_16.png

  • 常见的ResponseCode状态码对应表如下:
名称说明
OK200请求成功。通常用于GET与POST请求。
Created201请求已成功并且服务器创建了新的资源。
Accepted202服务器已接受请求,但尚未处理。
No Content204服务器成功处理了请求,但没有返回任何内容。
Moved Permanently301请求的资源已被永久移动到新位置。
Found302请求的资源临时从不同的URI响应请求。
Not Modified304如果请求的资源未修改,则返回此状态码。
Bad Request400服务器无法理解请求的格式,客户端应该做出修改。
Unauthorized401请求要求用户的身份认证。
Forbidden403服务器理解请求客户端的请求,但是拒绝执行此请求。
Not Found404服务器无法根据客户端的请求找到资源(网页)。
Method Not Allowed405客户端请求中的方法被禁止。
Request Timeout408服务器等待客户端发送的请求时间过长。
Conflict409由于冲突,请求无法完成。
Gone410客户端请求的资源已经不存在。
Unsupported Media Type415服务器不支持请求的媒体格式。
Internal Server Error500服务器遇到意外情况,无法完成请求。
Not Implemented501服务器不支持请求的方法。
Bad Gateway502服务器作为网关或代理,从上游服务器收到了无效的响应。
Service Unavailable503服务器目前无法使用(由于超载或停机维护)。
Gateway Timeout504服务器作为网关或代理,但是没有及时从上游服务器获得响应。
HTTP Version Not Supported505服务器不支持请求中使用的HTTP协议版本。
  • ResponseCode状态码补充说明:

    (1).2xx 状态码:表示请求已成功被服务器接收、理解和处理。

    (2).3xx 状态码:表示需要客户端采取进一步的操作才能完成请求。

    (3).4xx 状态码:表示客户端可能发生了错误,导致服务器无法处理请求。

    (4).5xx 状态码:表示服务器在处理请求的过程中发生了错误。

  • 5.销毁对象

当该请求使用完毕时,调用destroy方法主动销毁

httpRequest.destroy();

四、常用的GET和POST请求写法如下

下述代码来源于官网的示例

Snip20240928_18.png

Snip20240928_17.png

更详细的请求说明请移步官网查看