All Products
Search
Document Center

HTTPDNS:Konfigurasi Dasar

Last Updated:Sep 10, 2025

Topik ini menjelaskan konfigurasi dasar untuk HarmonyOS SDK.

Konfigurasi Konteks

SDK menggunakan API HarmonyOS untuk penyimpanan data dan memerlukan parameter Context. Anda harus menetapkan parameter Context selama konfigurasi.

Berikut adalah contoh kode:

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

const ACCOUNT_ID = 'Ganti ini dengan Account ID dari Konsol Alibaba Cloud HTTPDNS'
        
export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    // ************* Mulai Konfigurasi Inisialisasi *************
    httpdns.configService(ACCOUNT_ID, {
      // Konfigurasikan konteks Harmony.
      context: this.context,
    });
    // ************* Akhir Konfigurasi Inisialisasi *************
  }
  // Kode lainnya dihilangkan.
}
Penting

Konteks diperlukan. Jika tidak dikonfigurasi, node layanan HTTPDNS tidak dapat disimpan, yang mengurangi ketersediaan HTTPDNS.

Gunakan Permintaan HTTPS

Anda dapat menentukan apakah SDK menggunakan HTTPS untuk mengirim permintaan resolusi ke server. Secara default, SDK menggunakan HTTP.

Permintaan HTTPS menawarkan keamanan lebih tinggi, namun biaya penggunaannya berbeda dibandingkan dengan permintaan HTTP. Untuk informasi lebih lanjut, lihat Tagihan Produk.

Berikut adalah contoh kode untuk mengonfigurasi SDK agar menggunakan HTTPS:

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 Alibaba Cloud HTTPDNS'

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    httpdns.configService(ACCOUNT_ID, {
      context: this.context,
      // ************* Mulai: Konfigurasikan apakah akan menggunakan Permintaan HTTPS *************
      useHttps: true,
      // ************* Akhir: Konfigurasikan apakah akan menggunakan Permintaan HTTPS *************
    });
  }
  // Kode lainnya dihilangkan.
}

Izinkan penggunaan alamat IP yang kedaluwarsa

SDK mengikuti protokol DNS dan menyimpan hasil resolusi berdasarkan Waktu hidup (TTL) yang ditentukan. Hal ini meningkatkan efisiensi dalam mendapatkan alamat IP untuk permintaan jaringan aplikasi. Jika cache telah kedaluwarsa dan aplikasi memanggil operasi resolusi untuk mendapatkan alamat IP, situasi berikut dapat terjadi:

  1. Jika aplikasi memanggil API non-blokir sinkron, hasil kosong dikembalikan karena cache telah kedaluwarsa dan SDK tidak dapat segera mengambil hasil baru dari server. Untuk menghindari pemblokiran thread, fallback ke resolusi menggunakan Local DNS.

  2. Saat aplikasi memanggil API asinkron, SDK meminta hasil resolusi baru dari server. Karena proses ini membutuhkan waktu, pemanggilan API sinkron akan memblokir thread hingga hasil baru dikembalikan.

SDK menyediakan pengaturan untuk menggunakan kembali alamat IP yang kedaluwarsa. Jika opsi ini disetel ke YA, API langsung mengembalikan alamat IP dari cache meskipun sudah kedaluwarsa, sehingga mengurangi waktu resolusi DNS dan meningkatkan kinerja permintaan jaringan. Setelah mengembalikan alamat IP yang kedaluwarsa, SDK memulai thread asinkron untuk menyelesaikan nama domain dan mendapatkan hasil resolusi baru.

Opsi ini memiliki sedikit efek samping, terutama jika konfigurasi resolusi jarang berubah, seperti pada situs utama atau nama domain gerbang statis. Jika resolusi nama domain berubah, opsi ini hanya memengaruhi permintaan pertama setelah cache kedaluwarsa. SDK segera memulai pembaruan resolusi saat dipanggil dan mendeteksi alamat IP yang kedaluwarsa.

Berikut adalah contoh kode untuk melarang penggunaan alamat IP yang kedaluwarsa:

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 Alibaba Cloud HTTPDNS'

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    // Konfigurasikan HTTPDNS
    httpdns.configService(ACCOUNT_ID, {
      context: this.context,
      // ************* Mulai: Konfigurasikan apakah akan mengizinkan penggunaan alamat IP yang kedaluwarsa *************
      enableExpiredIp: false,
      // ************* Akhir: Konfigurasikan apakah akan mengizinkan penggunaan alamat IP yang kedaluwarsa *************
    })
  }
  // Kode lainnya dihilangkan.
}

Aktifkan caching lokal

Parameter enableDiskCache mengontrol apakah hasil resolusi disimpan dalam cache lokal. Secara default, fitur ini dinonaktifkan (false).

Jika fitur ini diaktifkan, hasil setiap resolusi disimpan dalam cache lokal. Saat aplikasi dimulai kembali, ia memuat hasil resolusi yang tersimpan dalam cache dari penyimpanan lokal, mempercepat proses mendapatkan hasil resolusi saat startup aplikasi.

Setelah mengaktifkan caching lokal, Anda dapat menggunakan expiredThresholdMillis untuk mengonfigurasi waktu kedaluwarsa cache. Saat aplikasi dimulai, ia memuat cache dari lapisan persisten ke memori. Parameter ini menyebabkan aplikasi membuang hasil resolusi apa pun yang telah kedaluwarsa lebih lama dari durasi expiredThresholdMillis. Nilai defaultnya adalah 0 ms.

Berikut adalah contoh kode untuk mengaktifkan caching lokal:

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 Alibaba Cloud HTTPDNS'

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    // Konfigurasikan HTTPDNS
    httpdns.configService(ACCOUNT_ID, {
      context: this.context,
      // ************* Mulai: Konfigurasikan apakah akan mengaktifkan caching lokal *************
      enableDiskCache: true,
      expiredThresholdMillis: 3.600.000,
      // ************* Akhir: Konfigurasikan apakah akan mengaktifkan caching lokal *************
    })
  }
  // Kode lainnya dihilangkan.
}

Aktifkan resolusi otomatis pada perubahan jaringan

Anda dapat mengonfigurasi apakah akan secara otomatis menyelesaikan ulang nama domain yang sebelumnya diselesaikan ketika jaringan berubah. Secara default, fitur ini diaktifkan (true).

Saat jaringan berubah, hasil resolusi yang tersimpan dalam cache mungkin menjadi tidak valid. Resolusi ulang diperlukan untuk mendapatkan hasil yang benar.

Berikut adalah contoh kode untuk menonaktifkan resolusi otomatis pada perubahan jaringan:

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 Alibaba Cloud HTTPDNS'

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    // Konfigurasikan HTTPDNS
    httpdns.configService(ACCOUNT_ID, {
      context: this.context,
      // ************* Mulai: Konfigurasikan apakah akan mengaktifkan resolusi otomatis pada perubahan jaringan *************
      reResolveCachedHostsAfterNetworkChanged: false,
      // ************* Akhir: Konfigurasikan apakah akan mengaktifkan resolusi otomatis pada perubahan jaringan *************
    })
  }
  // Kode lainnya dihilangkan.
}
Penting
  • Pergantian antara Wi-Fi, seluler, dan tanpa jaringan dianggap sebagai perubahan jaringan.

  • Pergantian antara 3G, 4G, dan 5G tidak dianggap sebagai perubahan jaringan.

Konfigurasi Timeout

Anda dapat mengonfigurasi timeout untuk permintaan resolusi nama domain. Timeout default adalah 2.000 ms.

Berikut adalah contoh konfigurasi:

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 Alibaba Cloud HTTPDNS'

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    // Konfigurasikan HTTPDNS
    httpdns.configService(ACCOUNT_ID, {
      context: this.context,
      // ************* Mulai: Konfigurasikan durasi timeout *************
      timeoutInMs: 3.000
      // ************* Akhir: Konfigurasikan durasi timeout *************
    })
  }
  // Kode lainnya dihilangkan.
}

Enkripsi Parameter Resolusi

Anda dapat mengonfigurasi kunci enkripsi untuk parameter antarmuka resolusi nama domain. Setelah mengaktifkan enkripsi, SDK mengenkripsi nama domain, alamat IP klien, parameter bisnis kustom, dan jenis resolusi sebelum mengirim permintaan ke layanan. Data ditransmisikan ke server sebagai ciphertext, meningkatkan keamanan. Secara default, enkripsi dinonaktifkan.

Berikut adalah contoh konfigurasi:

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 Alibaba Cloud HTTPDNS'
const AES_SECRET_KEY = 'Ganti ini dengan kunci enkripsi AES dari Konsol Alibaba Cloud HTTPDNS'

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    // Konfigurasikan HTTPDNS
    httpdns.configService(ACCOUNT_ID, {
      context: this.context,
      // ************* Mulai: Konfigurasikan kunci enkripsi antarmuka *************
      aesSecretKey: AES_SECRET_KEY,
      // ************* Akhir: Konfigurasikan kunci enkripsi antarmuka *************
    })
  }
  // Kode lainnya dihilangkan.
}