All Products
Search
Document Center

HTTPDNS:Integrasikan HarmonyOS SDK

Last Updated:Nov 26, 2025

Topik ini menjelaskan cara mengintegrasikan kit pengembangan perangkat lunak (SDK) HarmonyOS.

Pendahuluan

SDK ini berbasis HarmonyOS API 12 dan memiliki compileSdkVersion 5.0.0(12).

Catatan

Pada versi HarmonyOS sebelum Beta5, jika Anda menggunakan aturan resolusi nama domain (DNS) kustom untuk mengakses server melalui alamat IP tertentu, Anda harus menentukan port dalam URL. Jika tidak, aturan DNS kustom mungkin tidak berlaku, dan sistem akan secara otomatis kembali ke LocalDNS.

Prasyarat

  1. Pahami alur kerja Produk dan peroleh Account ID.

  2. Persiapkan lingkungan pengembangan aplikasi HarmonyOS. Untuk informasi selengkapnya, lihat HarmonyOS Application Development Guide.

Langkah 1: Instal SDK

Anda dapat menjalankan perintah berikut di direktori root aplikasi HarmonyOS untuk menginstal SDK:

ohpm install @aliyun/httpdns

Untuk informasi selengkapnya tentang tool ohpm dan cara menginstal SDK pihak ketiga untuk OpenHarmony, lihat OpenHarmony Third-party Library Repository Guide.

Langkah 2: Konfigurasi SDK

Anda dapat menjalankan kode berikut dalam callback siklus hidup onCreate Ability untuk mengonfigurasi SDK:

import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
import { httpdns } from '@aliyun/httpdns';

const ACCOUNT_ID = 'Ganti ini dengan Account ID dari Konsol HTTPDNS Alibaba Cloud'

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    // ************* Mulai konfigurasi inisialisasi *************
    httpdns.configService(ACCOUNT_ID, {
      context: this.context,
      // Tetapkan node layanan startup. Anda harus secara eksplisit memilih wilayah target. Nilai yang valid adalah Region.SG, Region.HK, Region.US, dan Region.DE.
      region: Region.SG, 
      useHttps: true,
    });
    // ************* Akhir konfigurasi inisialisasi *************
  }

  // Kode lainnya dihilangkan
}

Variabel ACCOUNT_ID adalah Account ID yang Anda peroleh dalam alur kerja Produk.

Penting
  • Jika Anda menyetel parameter useHttps ke true, biaya penagihan tambahan akan dikenakan. Untuk informasi selengkapnya, lihat dokumen Penagihan.

  • Jika informasi nama domain atau parameter SDNS Anda memerlukan tingkat keamanan tinggi, Anda dapat menyetel parameter aesSecretKey untuk mengaktifkan enkripsi lapisan konten pada permintaan resolusi. Penggunaan enkripsi konten akan menimbulkan biaya penagihan tambahan. Untuk informasi selengkapnya, lihat dokumen Penagihan.

Langkah 3: Gunakan SDK

Gunakan metode addCustomDnsRule

Sebelum mengirim permintaan jaringan, Anda dapat memanggil API resolusi nama domain SDK untuk melakukan resolusi HTTPDNS. Selanjutnya, gunakan API connection.addCustomDnsRule untuk mengonfigurasi hasil resolusi HTTPDNS dan menambahkan pemetaan kustom antara host dan alamat IP-nya yang sesuai untuk aplikasi saat ini. Kode berikut menunjukkan contoh permintaan 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 = 'Ganti ini dengan Account ID dari Konsol HTTPDNS Alibaba Cloud'

export async function requestWithHttpDns(url: string, options: http.HttpRequestOptions): Promise<http.HttpResponse> {
  let urlObject = Url.URL.parseURL(url);
  const host = urlObject.hostname;
  // ************* Mulai resolusi HTTPDNS untuk mendapatkan nama domain *************
  const httpdnsService = await httpdns.getService(ACCOUNT_ID);
  const result = await httpdnsService.getHttpDnsResultAsync(host, IpType.Auto);
  // ************* Akhir resolusi HTTPDNS untuk mendapatkan nama domain *************
  // ************* Mulai menyetel aturan DNS menggunakan API sistem *************
  try {
    await connection.removeCustomDnsRule(host);
  } catch (ignored) {
  }
  
  const allIps: string[] = [];
  if (result.ipv4s && result.ipv4s.length > 0) {
    allIps.push(...result.ipv4s);
  }
  if (result.ipv6s && result.ipv6s.length > 0) {
    allIps.push(...result.ipv6s);
  }
  if (allIps.length > 0) {
    console.info(`request with ${allIps?.join(',')}`);
    await connection.addCustomDnsRule(host, allIps);
  } else {
    console.log(`HTTPDNS resolution returned no results. DNS rules are not set.`);
  }
  // ************* Akhir menyetel aturan DNS menggunakan API sistem *************
  // ************* Mulai mengirim permintaan jaringan menggunakan API sistem *************
  const httpRequest = http.createHttp();
  return httpRequest.request(url, options);
  // ************* Akhir mengirim permintaan jaringan menggunakan API sistem *************
}

Variabel ACCOUNT_ID adalah Account ID yang Anda peroleh dalam alur kerja Produk.

Penting

Cara menyesuaikan aturan resolusi DNS di HarmonyOS

HarmonyOS menyediakan API berikut untuk menyesuaikan aturan resolusi DNS: addCustomDnsRule, removeCustomDnsRule, dan clearCustomDnsRules.

API addCustomDnsRule memungkinkan aplikasi menambahkan pemetaan kustom antara host dan alamat IP-nya yang sesuai.

API removeCustomDnsRule memungkinkan aplikasi menghapus aturan DNS kustom untuk host tertentu.

API clearCustomDnsRules memungkinkan aplikasi menghapus semua aturan DNS kustom.

Oleh karena itu, jika suatu aplikasi perlu menyesuaikan aturan DNS untuk permintaan jaringan, Anda dapat menggunakan API ini untuk menyetel aturan sebelum mengirim permintaan jaringan.

Gunakan metode dnsRules dari Remote Communication Kit

Saat menggunakan paket Remote Communication Kit untuk mengirim permintaan jaringan, Anda dapat terlebih dahulu memanggil API resolusi nama domain SDK untuk melakukan resolusi HTTPDNS. Kemudian, konfigurasikan bidang dnsRules untuk memodifikasi aturan DNS. Kode berikut menunjukkan contoh permintaan fetch:

import { httpdns, IpType } from '@aliyun/httpdns';
import { rcp } from '@kit.RemoteCommunicationKit';
import Url from '@ohos.url';

const ACCOUNT_ID = 'Ganti ini dengan Account ID dari Konsol HTTPDNS Alibaba Cloud';

export async function rcpWithHttpDns(url: string): Promise<rcp.Response> {
  let urlObject = Url.URL.parseURL(url);
  const host = urlObject.hostname;

  // ************* Mulai resolusi HTTPDNS untuk mendapatkan hasil IP *************
  const httpdnsService = await httpdns.getService(ACCOUNT_ID);
  const httpdnsResult = await httpdnsService.getHttpDnsResultAsync(host, IpType.Auto);
  let addresses: string[] = [];
  if (httpdnsResult.ipv4s) {
    addresses.push(...httpdnsResult.ipv4s)
  }
  if (httpdnsResult.ipv6s) {
    addresses.push(...httpdnsResult.ipv6s)
  }
  // ************* Akhir resolusi HTTPDNS untuk mendapatkan hasil IP *************

  const request = new rcp.Request(url, "GET");
  request.configuration = {
    dns: {
      // ************* Mulai menyetel alamat IP menggunakan dnsRules *************
      dnsRules: [{
        host,
        port: 80,
        ipAddresses: addresses
      }, {
        host,
        port: 443,
        ipAddresses: addresses
      }]
      // ************* Akhir menyetel alamat IP menggunakan dnsRules *************
    }
  }

  // ************* Mulai mengirim permintaan jaringan menggunakan API sistem *************
  const session = rcp.createSession();
  return session.fetch(request);
  // ************* Akhir mengirim permintaan jaringan menggunakan API sistem *************
}

Variabel ACCOUNT_ID adalah Account ID yang Anda peroleh dalam alur kerja Produk.

Langkah selanjutnya

Untuk mengonfigurasi SDK dengan pengaturan yang lebih spesifik atau menggunakan fitur lain, seperti permintaan terautentikasi, lihat HarmonyOS SDK API.