引言
在HarmonyOS应用开发中,网络请求与数据持久化是构建动态、智能化App的两大基石。无论是获取远程API数据,还是将用户偏好、缓存内容保存至本地,开发者都需要熟练掌握相关API。本文将从核心概念入手,结合ArkTS语言,通过一个可运行的完整示例,带你深入理解HarmonyOS下的HTTP请求、文件存储及关系型数据库操作,并总结常见问题与最佳实践。
一、核心概念剖析
1.1 网络请求 ------ http模块
HarmonyOS提供了@ohos.net.http模块用于发起HTTP/HTTPS请求。它基于Promise实现,支持GET、POST等常用方法,可配置请求头、超时、证书校验等。使用时需在module.json5中声明网络权限:
json
"requestPermissions": [
{"name": "ohos.permission.INTERNET"}
]
核心API包括:
-
createHttp():创建HTTP请求实例 -
request(url, options):发起请求,返回HttpResponse -
可选配置:
method、header、extraData、connectTimeout、readTimeout
响应包含responseCode、header(响应头)、result(响应体,可为string/Object/ArrayBuffer)
1.2 数据持久化的三大方案
- Preferences :轻量级键值对存储,适合保存简单配置。对应
@ohos.data.preferences,数据保存在文件中。 - 关系型数据库(RDB) :基于SQLite,提供完整的SQL支持,适合结构化数据存储。通过
@ohos.data.relationalStore获得RdbStore。 - 分布式数据管理:基于KV数据模型,支持跨设备同步,此处暂且不表。
选择依据:
-
少量简单数据 → Preferences
-
复杂查询、关联数据 → RDB
-
跨设备共享 → 分布式数据对象
二、实战示例:天气查询应用
我们将构建一个简单的天气查询页面:输入城市名,发起网络请求获取气温,并将查询历史保存在关系型数据库中;同时使用Preferences记住用户上次输入的城市。
2.1 环境与权限准备
在entry/src/main/module.json5中添加权限:
json
{
"module": {
"requestPermissions": [
{ "name": "ohos.permission.INTERNET" }
]
}
}
新建Ability,页面使用ArkUI声明式开发。
2.2 网络请求工具类封装
创建utils/HttpUtil.ets,使用http模块发起GET请求,并解析JSON结果。
```typescript
import http from '@ohos.net.http';
import { BusinessError } from '@ohos.base';
export class HttpUtil {
private httpRequest: http.HttpRequest;
constructor() {
this.httpRequest = http.createHttp();
}
async getWeather(city: string): Promise {
// 注意:此为示例URL,实际使用时需替换为真实接口
let url = https://api.example.com/weather?city=${city};
let promise = this.httpRequest.request(url, {
method: http.RequestMethod.GET,
connectTimeout: 60000,
readTimeout: 60000,
header: { 'Content-Type': 'application/json' }
});
try {
let data = await promise;
if (data.responseCode