本章节介绍了HarmonyOS SDK的接入方法。
前言
本SDK基于HarmonyOS API 12开发,compileSdkVersion 为 5.0.0(12)。
准备工作
请了解产品使用流程,获取Account ID
请参考HarmonyOS应用开发文档准备HarmonyOS应用开发环境
第一步:安装SDK
在HarmonyOS应用根目录执行以下命令安装SDK:
ohpm install @aliyun/httpdns
ohpm工具及更多关于OpenHarmony安装第三方SDK的信息请参考OpenHarmony三方库中心仓说明。
第二步:配置SDK
在Alibity onCreate生命周期回调中执行以下代码配置SDK:
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
import { httpdns } from '@aliyun/httpdns';
const ACCOUNT_ID = '这里需要替换为阿里云HTTPDNS控制台的Account ID'
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
// ************* 初始化配置 begin *************
httpdns.configService(ACCOUNT_ID, {
context: this.context,
});
// ************* 初始化配置 end *************
}
// 省略其它代码
}
其中ACCOUNT_ID
变量为产品使用流程中获取Account ID。
第三步:使用SDK
在发起网络请求之前,调用SDK的API进行HTTPDNS解析,通过connection.addCustomDnsRuleAPI配置HTTPDNS的解析结果,以HTTP请求为例,代码如下:
import { http } from '@kit.NetworkKit';
import connection from '@ohos.net.connection';
import { httpdns, IpType, } from '@aliyun/httpdns';
import Url from '@ohos.url';
const ACCOUNT_ID = '这里需要替换为阿里云HTTPDNS控制台的Account ID'
export async function requestWithHttpDns(url: string, options: http.HttpRequestOptions): Promise<http.HttpResponse> {
let urlObject = Url.URL.parseURL(url);
const host = urlObject.hostname;
// ************* HTTPDNS解析获取域名 begin *************
const httpdnsService = await httpdns.getService(ACCOUNT_ID);
const result = await httpdnsService.getHttpDnsResultAsync(host, IpType.Auto);
// ************* HTTPDNS解析获取域名 end *************
// ************* 通过系统API设置DNS规则 begin *************
try {
await connection.removeCustomDnsRule(host);
} catch (ignored) {
}
if (result.ipv4s?.length ?? 0 > 0) {
await connection.addCustomDnsRule(host, result.ipv4s);
} else if (result.ipv6s?.length ?? 0 > 0) {
await connection.addCustomDnsRule(host, result.ipv6s);
} else {
console.log(`httpdns解析没有结果,不设置dns`);
}
// ************* 通过系统API设置DNS规则 begin *************
// ************* 通过系统API进行网络请求 begin *************
const httpRequest = http.createHttp();
return httpRequest.request(url, options);
// ************* 通过系统API进行网络请求 end *************
}
其中ACCOUNT_ID
变量为产品使用流程中获取Account ID。
重要
HarmonyOS 如何定制DNS解析规则
HarmonyOS 提供了定制DNS解析规则的API:addCustomDnsRule、removeCustomDnsRule、clearCustomDnsRules。
通过addCustomDnsRule API应用可以添加自定义host和对应的IP地址的映射,
通过removeCustomDnsRule API应用可以删除对应host的自定义DNS规则,
通过clearCustomDnsRules API应用可以删除所有的自定义DNS规则。
因此,当应用想要定制网络请求的DNS规则时,可以在网络请求之前,通过上述API设置对应的规则,然后再发起网络请求。
后续步骤
如果要对SDK进行更精细的配置或者使用鉴权请求等其它功能,可以参考HarmonyOS SDK API。
反馈
- 本页导读 (0)
文档反馈