All Products
Search
Document Center

HTTPDNS:Operasi resolusi nama domain

Last Updated:Jul 19, 2025

Topik ini menjelaskan operasi yang terkait dengan resolusi nama domain.

Lakukan pra-resolusi

Setelah aplikasi dimulai dan SDK diinisialisasi, Anda dapat segera memanggil operasi ini untuk menentukan nama domain yang sering diakses yang mungkin akan digunakan nanti. Ini memungkinkan SDK untuk menyelesaikan nama domain tersebut terlebih dahulu, mengurangi latensi permintaan resolusi nama domain berikutnya.

Jika Anda memanggil operasi ini selama waktu proses, SDK segera menyelesaikan nama domain dalam daftar yang ditentukan dan memperbarui hasil resolusi di cache. Ini setara dengan pemaksaan pembaruan. Operasi ini biasanya digunakan setelah tindakan bisnis tertentu terjadi ketika Anda ingin menyegarkan resolusi nama domain saat ini dan memaksa penjadwalan ulang nama domain.

Definisi operasi

- (void)setPreResolveHosts:(NSArray *)hosts;

Kelas

HttpDnsService

Deskripsi parameter

Parameter

Tipe

Diperlukan atau tidak

Catatan

hosts

NSArray *

Ya

Nama domain yang ingin Anda pra-resolve.

Penting
  • Nama domain yang akan di-pra-resolve harus berupa string nama domain murni dan tidak boleh berisi header protokol (seperti http://), jalur, atau port. Jika tidak, pengecualian resolusi akan terjadi.

  • Nama domain wildcard tidak didukung.

  • Contoh benar: @[@"www.example.com", @"api.example.com", @"img.example.com"]

  • Contoh salah: @[@"http://www.example.com:443/path", @"*.example.com"]

Resolusi nama domain sinkron non-blokir operasi

Jika Anda menggunakan operasi sinkron non-blokir untuk menyelesaikan nama domain, thread saat ini tidak diblokir, tetapi hasil kosong mungkin dikembalikan.

Operasi ini hanya memeriksa cache dan mengembalikan hasil resolusi dari cache. Jika tidak ada hasil resolusi di cache atau hasil resolusi yang tersimpan memiliki TTL kedaluwarsa, resolusi nama domain dilakukan di thread pekerja. Setelah resolusi berhasil, cache diperbarui untuk digunakan dalam resolusi nama domain berikutnya.

Definisi operasi

- (nullable HttpdnsResult *)resolveHostSyncNonBlocking:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType;

- (nullable HttpdnsResult *)resolveHostSyncNonBlocking:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType withSdnsParams:(NSDictionary<NSString *, NSString *> *)sdnsParams sdnsCacheKey:(NSString *)cacheKey;

- (nullable HttpdnsResult *)resolveHostSyncNonBlocking:(HttpdnsRequest *)request;

Catatan
  • Operasi ini ditambahkan di HTTPDNS SDK V3.0.0.

Kelas

HttpDnsService

Definisi parameter

Parameter

Tipe

Diperlukan atau tidak

Catatan

host

NSString *

Ya

Nama domain yang ingin Anda resolve

queryIpType

HttpdnsQueryIPType

Ya

Tipe alamat IP ke mana Anda ingin menyelesaikan nama domain. Gunakan HttpdnsQueryIPType

Nilai valid:

  • v4: Alamat IPv4.

  • v6: Alamat IPv6.

  • both: baik alamat IPv4 maupun IPv6.

  • auto: SDK menentukan tipe alamat berdasarkan lingkungan jaringan perangkat saat ini. Secara default, nama domain diselesaikan ke alamat IPv4. Jika lingkungan jaringan saat ini mendukung IPv6, SDK mencoba menyelesaikan nama domain ke alamat IPv6.

sdnsParams

NSDictionary<NSString *, NSString *> *

Tidak

Parameter resolusi yang ditentukan perangkat lunak.

cacheKey

NSString *

Tidak

Kunci cache yang ditentukan perangkat lunak.

request

HttpdnsRequest *

Ya

Untuk informasi lebih lanjut, lihat Struktur data terkait resolusi.

Deskripsi pengembalian

Tipe

Deskripsi

HttpdnsResult *

Hasil resolusi. Untuk informasi lebih lanjut, lihat Struktur data terkait resolusi.

Operasi resolusi nama domain sinkron

Jika Anda menggunakan operasi resolusi sinkron untuk menyelesaikan nama domain, thread saat ini diblokir hingga hasil resolusi yang valid diperoleh dan dikembalikan.

Operasi ini pertama-tama memeriksa cache. Jika hasil resolusi yang valid ada di cache, hasil resolusi yang tersimpan segera dikembalikan. Jika tidak ada hasil resolusi yang valid ditemukan, operasi memblokir thread saat ini yang membuat panggilan resolusi dan melakukan resolusi nama domain di thread pekerja. Setelah resolusi nama domain selesai, hasil resolusi dikembalikan. Jika batas waktu tercapai, nilai null dikembalikan.

Catatan
  • Operasi ini ditambahkan di HTTPDNS SDK V3.0.0.

  • Untuk mencegah tersendatnya aplikasi akibat kesalahan penggunaan operasi ini di thread utama, operasi ini melakukan deteksi. Jika operasi mendeteksi bahwa thread pemanggil adalah thread utama, ia secara otomatis menurunkan spesifikasi ke logika implementasi operasi resolveHostSyncNonBlocking.

  • Batas waktu default untuk operasi ini adalah 2 detik. Jika tidak ada hasil yang valid diperoleh dalam periode timeout, nil dikembalikan. Anda dapat menggunakan objek permintaan untuk menentukan periode timeout kustom.

Definisi operasi

- (nullable HttpdnsResult *)resolveHostSync:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType;

- (nullable HttpdnsResult *)resolveHostSync:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType withSdnsParams:(NSDictionary<NSString *, NSString *> *)sdnsParams sdnsCacheKey:(NSString *)cacheKey;

- (nullable HttpdnsResult *)resolveHostSync:(HttpdnsRequest *)request;

Kelas

HttpDnsService

Definisi parameter

Parameter

Tipe

Diperlukan atau tidak

Catatan

host

NSString *

Ya

Nama domain yang ingin Anda resolve

queryIpType

HttpdnsQueryIPType

Ya

Tipe alamat IP ke mana Anda ingin menyelesaikan nama domain. Gunakan HttpdnsQueryIPType

Nilai valid:

  • v4: Alamat IPv4.

  • v6: Alamat IPv6.

  • both: baik alamat IPv4 maupun IPv6.

  • auto: SDK menentukan tipe alamat berdasarkan lingkungan jaringan perangkat saat ini. Secara default, nama domain diselesaikan ke alamat IPv4. Jika lingkungan jaringan saat ini mendukung IPv6, SDK mencoba menyelesaikan nama domain ke alamat IPv6.

sdnsParams

NSDictionary<NSString *, NSString *> *

Tidak

Parameter resolusi yang ditentukan perangkat lunak.

cacheKey

NSString *

Tidak

Kunci cache yang ditentukan perangkat lunak.

request

HttpdnsRequest *

Ya

Untuk informasi lebih lanjut, lihat Struktur data terkait resolusi.

Deskripsi pengembalian

Tipe

Deskripsi

HttpdnsResult *

Hasil resolusi. Untuk informasi lebih lanjut, lihat Struktur data terkait resolusi.

Operasi resolusi nama domain asinkron

Jika Anda menggunakan operasi resolusi asinkron untuk menyelesaikan nama domain, thread saat ini tidak diblokir, dan hasil resolusi dikembalikan melalui callback.

Operasi ini pertama-tama memeriksa cache. Jika hasil resolusi yang valid ada di cache, hasil resolusi yang tersimpan segera dikembalikan melalui callback. Jika tidak ada hasil resolusi yang valid ditemukan, operasi melakukan resolusi nama domain di thread pekerja. Setelah resolusi nama domain selesai atau batas waktu tercapai, hasil resolusi dikembalikan melalui callback.

Definisi operasi

- (void)resolveHostAsync:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType completionHandler:(void (^)(HttpdnsResult * nullable))handler;

- (void)resolveHostAsync:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType withSdnsParams:(NSDictionary<NSString *, NSString *> *)sdnsParams sdnsCacheKey:(NSString *)cacheKey completionHandler:(void (^)(HttpdnsResult * nullable))handler;

- (void)resolveHostAsync:(HttpdnsRequest *)request completionHandler:(void (^)(HttpdnsResult * nullable))handler;

Catatan
  • Operasi ini ditambahkan di HTTPDNS SDK V3.0.0.

  • Batas waktu default untuk operasi ini adalah 2 detik. Jika tidak ada hasil yang valid diperoleh dalam periode timeout, nil dikembalikan. Anda dapat menggunakan objek permintaan untuk menentukan periode timeout kustom.

Kelas

HttpDnsService

Definisi parameter

Parameter

Tipe

Diperlukan atau tidak

Catatan

host

NSString *

Ya

Nama domain yang ingin Anda resolve

queryIpType

HttpdnsQueryIPType

Ya

Tipe alamat IP ke mana Anda ingin menyelesaikan nama domain. Gunakan HttpdnsQueryIPType

Nilai valid:

  • v4: Alamat IPv4.

  • v6: Alamat IPv6.

  • both: baik alamat IPv4 maupun IPv6.

  • auto: SDK menentukan tipe alamat berdasarkan lingkungan jaringan perangkat saat ini. Secara default, nama domain diselesaikan ke alamat IPv4. Jika lingkungan jaringan saat ini mendukung IPv6, SDK mencoba menyelesaikan nama domain ke alamat IPv6.

handler

(void (^)(HttpdnsResult * nullable))

Ya

Callback.

sdnsParams

NSDictionary<NSString *, NSString *> *

Tidak

Parameter resolusi yang ditentukan perangkat lunak.

cacheKey

NSString *

Tidak

Kunci cache yang ditentukan perangkat lunak.

request

HttpdnsRequest *

Ya

Untuk informasi lebih lanjut, lihat Struktur data terkait resolusi.

Deskripsi hasil callback

Tipe

Deskripsi

HttpdnsResult *

Hasil resolusi. Untuk informasi lebih lanjut, lihat Struktur data terkait resolusi.

Operasi untuk pembersihan cache nama domain

Jika Anda menggunakan HTTPDNS, Anda dapat memanggil operasi ini untuk membersihkan catatan DNS nama domain yang disimpan di cache. Dengan cara ini, hasil resolusi dapat diperbarui dalam hitungan detik. Sebagai contoh, jika nama domain xxx.com diselesaikan ke alamat IP ip1 dan serangan terjadi pada ip1, Anda dapat melakukan langkah-langkah berikut untuk memigrasikan lalu lintas dari ip1 ke ip2:

  1. Pertama, ubah alamat IP nama domain menjadi ip2 di Konsol Cloud DNS.

  2. Kemudian, buka Konsol HTTPDNS dan ajukan aksi penyegaran manual untuk nama domain ini untuk memicu penyegaran di sisi server.

  3. Secara manual panggil operasi ini untuk membersihkan cache lokal dari nama domain xxx.com.

  4. Jika permintaan diinisiasi setelah cache dibersihkan dari aplikasi, server mengirimkan permintaan baru ke server otoritatif untuk mendapatkan ip2 dalam catatan DNS terbaru. Dengan cara ini, ip2 segera digunakan sebagai alamat IP aktual untuk resolusi.

Anda dapat memanggil operasi ini untuk membersihkan cache nama domain tertentu atau semua nama domain.

Penting
  • Operasi ini hanya didukung di HTTPDNS SDK V2.0.4 dan versi lebih baru. Operasi cleanAllHostCache yang baru ditambahkan didukung di V3.1.0 dan versi lebih baru.

  • Operasi ini membersihkan cache memori dan cache sandbox persisten lokal.

Definisi operasi

- (void)cleanHostCache:(NSArray <NSString *>*)hostArray;

- (void)cleanAllHostCache;

Deskripsi parameter

Parameter

Tipe

Diperlukan atau tidak

Catatan

hostArray

NSArray <NSString *> *

Ya

Sebuah array yang terdiri dari nama domain yang catatan DNS-nya ingin Anda hapus dari cache lokal. Jika Anda ingin membersihkan semua data, atur parameter ini ke nil atau array kosong.

Struktur data terkait resolusi

Operasi resolusi nama domain yang disediakan oleh HTTPDNS iOS SDK terutama melibatkan dua struktur kustom: HttpdnsRequest dan HttpdnsResult.

HttpdnsRequest

Kelas permintaan resolusi yang membungkus parameter permintaan terkait dengan resolusi nama domain.

Parameter

Tipe

Diperlukan atau tidak

Catatan

host

NSString *

Ya

Nama domain yang ingin Anda resolve.

queryIpType

HttpdnsQueryIPType

Ya

Tipe alamat IP ke mana Anda ingin menyelesaikan nama domain. Gunakan HttpdnsQueryIPType

Nilai valid:

  • v4: Alamat IPv4.

  • v6: Alamat IPv6.

  • both: baik alamat IPv4 maupun IPv6.

  • auto: SDK menentukan tipe alamat berdasarkan lingkungan jaringan perangkat saat ini. Secara default, nama domain diselesaikan ke alamat IPv4. Jika lingkungan jaringan saat ini mendukung IPv6, SDK mencoba menyelesaikan nama domain ke alamat IPv6.

resolveTimeoutInSecond

double

Tidak

Periode timeout untuk resolusi. Untuk operasi sinkron, parameter ini menentukan waktu tunggu maksimum. Untuk operasi asinkron, parameter ini menentukan waktu tunggu maksimum untuk callback. Nilai default: 2. Nilai valid: 0.5 hingga 5.

Satuan: detik

sdnsParams

NSDictionary<NSString *, NSString *> *

Tidak

Parameter resolusi yang ditentukan perangkat lunak.

cacheKey

NSString *

Tidak

Kunci cache yang ditentukan perangkat lunak.

HttpdnsResult

Kelas hasil resolusi yang membungkus hasil yang dikembalikan setelah nama domain berhasil diselesaikan. Daftar berikut menjelaskan skenario di mana nilai kosong dikembalikan:

  • Nama domain tidak dapat diselesaikan ke alamat IP. Sebagai contoh, tidak ada alamat IP yang dikembalikan untuk resolusi rekursif.

  • Nama domain tidak ditambahkan di Konsol HTTPDNS, dan server tidak dapat menyelesaikan nama domain.

  • Resolusi gagal karena alasan seperti pengecualian jaringan.

  • Ketika Anda menggunakan operasi sinkron non-blokir, sistem pertama-tama mengembalikan nilai kosong jika tidak ada catatan yang segera ditemukan di cache lokal.

Parameter

Tipe

Deskripsi

host

NSString *

Nama domain yang diselesaikan

ips

NSArray<NSString *> *

Alamat IPv4 yang dikembalikan.

ipv6s

NSArray<NSString *> *

Alamat IPv6 yang dikembalikan.

lastUpdatedTimeInterval

NSTimeInterval

Waktu ketika alamat IPv4 terakhir diperbarui. Timestamp Unix. Satuan: detik

ttl

NSTimeInterval

TTL alamat IPv4. Satuan: detik