All Products
Search
Document Center

HTTPDNS:Java SDK API

Last Updated:Jan 10, 2026

Dokumen ini menjelaskan operasi API Java SDK.

1. Operasi konfigurasi dasar

1.1 Konfigurasi inisialisasi

Menginisialisasi konfigurasi layanan HTTPDNS. Anda harus menyelesaikan inisialisasi sebelum memanggil operasi API lainnya.

Definisi operasi

static void init(String accountId, InitConfig config)

Kelas

HttpDnsClient

Parameter

Parameter

Type

Wajib

Deskripsi

accountId

String

Ya

ID Akun yang ditetapkan oleh sistem. Dapatkan dari Konsol EMAS.

config

InitConfig

Ya

Objek konfigurasi inisialisasi.

Contoh kode

InitConfig config = new InitConfig.Builder()
    .setSecretKey("your-secret-key")
    .setEnableHttps(true)
    .setTimeoutMillis(2000)
    .setEnableExpiredIp(true)
    .build();

HttpDnsClient.init("your-account-id", config);

1.2 Mendapatkan instans layanan

Mendapatkan instans client HTTPDNS untuk operasi resolusi nama domain selanjutnya.

Definisi antarmuka

static HttpDnsClient getClient(String accountId)
static HttpDnsClient getClient(String accountId, String secretKey)

Kelas

HttpDnsClient

Parameter

Parameter

Tipe

Wajib

Deskripsi

accountId

String

Ya

ID Akun yang ditetapkan oleh sistem.

secretKey

String

Tidak

Kunci otentikasi.

Deskripsi Kembalian

Tipe

Deskripsi

HttpDnsClient

Instans client HTTPDNS.

Contoh kode

HttpDnsClient client = HttpDnsClient.getClient("your-account-id");

1.3 Item konfigurasi InitConfig

Anda dapat menggunakan InitConfig.Builder untuk membangun konfigurasi inisialisasi.

setSecretKey

Menetapkan kunci yang digunakan untuk menandatangani permintaan selama resolusi HTTPDNS.

Setelah kunci ditetapkan, SDK akan menandatangani permintaan yang dikirim ke server. Hal ini membantu server HTTPDNS mengotentikasi permintaan resolusi dan menyediakan Proteksi anti-pemalsuan, sehingga meningkatkan keamanan interaksi antara SDK dan server.

Definisi Antarmuka

InitConfig.Builder setSecretKey(String secretKey)

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

secretKey

String

Ya

Kunci penandatanganan.

setAesSecretKey

Menetapkan kunci yang digunakan untuk enkripsi selama resolusi HTTPDNS.

Setelah kunci enkripsi ditetapkan, SDK menggunakan algoritma AES untuk mengenkripsi parameter permintaan dan respons saat mengirim permintaan ke sisi server. Fitur enkripsi ini memberikan keamanan yang lebih baik, tetapi juga memengaruhi logika penagihan. Untuk informasi selengkapnya, lihat Penagihan Produk.

Definisi Antarmuka

InitConfig.Builder setAesSecretKey(String aesSecretKey)

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

aesSecretKey

String

Ya

Kunci enkripsi.

setEnableHttps

Secara default, SDK HTTPDNS menggunakan protokol HTTP untuk mengirim permintaan resolusi. Untuk menggunakan protokol HTTPS, Anda dapat mengonfigurasi SDK agar menggunakan HTTPS dalam resolusi nama domain.

Permintaan HTTPS memberikan keamanan yang lebih tinggi. Namun, permintaan HTTP dan HTTPS memiliki skema penagihan yang berbeda. Untuk informasi selengkapnya, lihat Penagihan Produk.

Catatan

Anda mungkin bertanya-tanya apakah enkripsi masih diperlukan jika sudah menggunakan HTTPS. Jawabannya ya. Keduanya bekerja pada lapisan yang berbeda. Protokol HTTPS menjamin keamanan lapisan transportasi. Namun, Anda tetap dapat melihat parameter dan detail respons jika melakukan packet capture. Enkripsi AES menjamin keamanan pada lapisan layanan HTTPDNS. Bahkan jika Anda melakukan packet capture, Anda tidak dapat melihat konten teks biasa. Oleh karena itu, Anda dapat mengaktifkan keduanya sesuai kebutuhan.

Definisi Antarmuka

InitConfig.Builder setEnableHttps(boolean enableHttps)

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

enableHttps

boolean

Ya

Menentukan apakah akan menggunakan protokol HTTPS untuk resolusi nama domain. `true`: Mengaktifkan resolusi HTTPS. `false`: Menonaktifkan resolusi HTTPS.

setTimeoutMillis

Menetapkan periode timeout untuk resolusi nama domain. Nilai default adalah 2.000 ms.

Definisi Antarmuka

InitConfig.Builder setTimeoutMillis(int timeoutMillis)

Kelas

InitConfig.Builder

Parameter

Parameter

Type

Wajib

Deskripsi

timeoutMillis

int

Ya

Periode timeout untuk resolusi nama domain, dalam milidetik. Nilai default adalah 2000 ms. Nilai maksimum adalah 5000 ms.

setEnableExpiredIp

SDK mengikuti protokol DNS dan menyimpan cache hasil resolusi nama domain sesuai dengan Time to Live (TTL)-nya. Hal ini meningkatkan efisiensi pengambilan alamat IP ketika aplikasi memulai permintaan jaringan. Ketika cache kedaluwarsa, jika aplikasi memanggil operasi resolusi untuk mengambil alamat IP, situasi berikut dapat terjadi:

  1. Jika aplikasi memanggil operasi sinkron non-blocking dan cache telah kedaluwarsa, SDK tidak dapat langsung mengambil hasil resolusi baru dari server. Untuk menghindari pemblokiran thread, operasi tersebut mengembalikan hasil kosong. Pemanggil harus menangani fallback ke resolusi LocalDNS.

  2. Jika aplikasi memanggil operasi sinkron atau asinkron, SDK mengirim permintaan resolusi untuk mengambil hasil baru dari server. Proses ini memerlukan waktu tertentu. Operasi sinkron memblokir thread hingga hasil baru diperoleh. Operasi asinkron hanya memberikan callback setelah hasil baru diperoleh.

SDK menyediakan opsi untuk menggunakan kembali alamat IP yang telah kedaluwarsa. Jika Anda menetapkan opsi ini ke true, operasi tersebut dapat langsung mengembalikan alamat IP yang kedaluwarsa meskipun cache IP telah kedaluwarsa. Hal ini mengurangi waktu pemrosesan untuk langkah DNS dan meningkatkan performa permintaan jaringan. Secara bersamaan, ketika SDK mendeteksi bahwa IP telah kedaluwarsa, SDK juga memulai thread asinkron untuk meresolusi nama domain dan mengambil hasil resolusi baru.

Oleh karena itu, efek samping dari mengaktifkan opsi ini minimal, terutama ketika konfigurasi resolusi nama domain tersebut tidak sering berubah, seperti untuk nama domain situs utama atau nama domain gateway statis. Jika resolusi nama domain memang berubah, pengaktifan opsi ini hanya memengaruhi permintaan pertama setelah cache domain kedaluwarsa. Hal ini karena ketika SDK dipanggil dan menemukan IP yang kedaluwarsa, SDK selalu langsung memulai pembaruan resolusi nama domain.

Diaktifkan secara default.

Penting

Ketika diatur ke true, SDK mengembalikan alamat IP yang kedaluwarsa secara real time dan tetap melakukan pembaruan asinkron untuk mengambil informasi IP terbaru.

Definisi Antarmuka

InitConfig.Builder setEnableExpiredIp(boolean enableExpiredIp)

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

enableExpiredIp

boolean

Ya

Menentukan apakah akan mengizinkan pengembalian alamat IP yang telah melebihi TTL-nya. `true`: Mengizinkan pengembalian alamat IP yang kedaluwarsa. `false`: Tidak mengembalikan alamat IP yang kedaluwarsa.

enableMemoryCache

Menetapkan apakah akan mengaktifkan cache memori.

Definisi Antarmuka

InitConfig.Builder enableMemoryCache(boolean enable)

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

enable

boolean

Ya

`true`: Mengaktifkan cache memori (default). `false`: Menonaktifkan cache memori.

setRegion

Jika aplikasi Anda perlu menggunakan HTTPDNS di lingkungan di luar Tiongkok, Anda dapat menetapkan node layanan startup untuk SDK ini guna meningkatkan efisiensi resolusi. Setelah Anda menetapkan node tersebut, SDK akan menggunakan node tersebut untuk resolusi nama domain dan untuk pembaruan selanjutnya terhadap daftar node penjadwalan.

Definisi Antarmuka

InitConfig.Builder setRegion(Region region)

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

region

Region

Ya

Nilai enumerasi untuk wilayah node layanan, digunakan untuk memilih wilayah layanan di luar Tiongkok. Jika tidak ditentukan, node layanan di Tiongkok daratan akan digunakan.

setIPRankingList

Menetapkan daftar preferensi IP. Setelah Anda mengonfigurasi operasi ini, jika nama domain yang sesuai diresolusi, SDK akan melakukan speed test IP pada alamat IP yang dikembalikan. SDK secara dinamis mengurutkan daftar yang dikembalikan untuk memastikan alamat IP pertama memiliki ketersediaan yang lebih baik.

Catatan

Hanya pengurutan preferensi alamat IPv4 yang didukung.

Definisi Antarmuka

InitConfig.Builder setIPRankingList(List<? extends IPRankingBean> ipRankingList)

Kelas

InitConfig.Builder

Parameter

Parameter

Type

Wajib

Deskripsi

ipRankingList

List<IPRankingBean>

Ya

Daftar konfigurasi preferensi IP.

configCacheTtlChanger

Secara default, setiap hasil resolusi menggunakan TTL yang disediakan oleh server untuk menentukan apakah hasil tersebut telah kedaluwarsa. Untuk memodifikasi TTL dari hasil resolusi, Anda dapat mengonfigurasinya menggunakan operasi ini.

Definisi Antarmuka

InitConfig.Builder configCacheTtlChanger(CacheTtlChanger changer)

Kelas

InitConfig.Builder

Parameter

Parameter

Type

Wajib

Deskripsi

changer

CacheTtlChanger

Ya

Mengimplementasikan antarmuka TTL kustom

setNotUseHttpDnsFilter

Untuk mencegah nama domain tertentu diresolusi menggunakan HTTPDNS, Anda dapat memfilter nama domain tersebut dengan operasi ini. Nama domain yang difilter akan mengembalikan hasil resolusi kosong. Anda perlu melakukan fallback ke LocalDNS untuk resolusi nama domain.

Definisi Antarmuka

InitConfig.Builder setNotUseHttpDnsFilter(NotUseHttpDnsFilter filter)

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

filter

NotUseHttpDnsFilter

Ya

Mengonfigurasi kebijakan blacklist.

setSdnsGlobalParams

Menetapkan parameter global untuk resolusi kustom (SDNS). Parameter global ini tidak memengaruhi pengaturan parameter tambahan dari operasi resolusi kustom. Parameter ini digabungkan dengan parameter tambahan dari operasi resolusi kustom. Setiap permintaan resolusi kustom membawa parameter global ini.

Definisi Antarmuka

InitConfig.Builder setSdnsGlobalParams(Map<String, String> params)

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

params

Map<String, String>

Ya

Parameter global untuk resolusi kustom.

2. Operasi resolusi nama domain

2.1 Menetapkan nama domain untuk pra-resolusi

Setelah aplikasi dimulai dan inisialisasi SDK selesai, Anda dapat langsung memanggil operasi ini untuk menetapkan nama domain hot spot yang mungkin akan digunakan nanti. Hal ini memungkinkan SDK untuk meresolusinya terlebih dahulu dan mengurangi latensi permintaan resolusi selanjutnya.

Jika Anda memanggil operasi ini saat aplikasi sedang berjalan, SDK juga langsung meresolusi nama domain dalam daftar yang ditentukan. Hal ini memperbarui hasil resolusi untuk nama domain tersebut dan mencatatnya dalam cache, yang setara dengan memaksa pembaruan. Biasanya digunakan setelah tindakan bisnis tertentu untuk memperbarui resolusi nama domain saat ini dan memaksa penjadwalan nama domain baru.

Penting

Untuk menyeimbangkan efisiensi resolusi dan kecepatan respons, SDK membatasi setiap tugas resolusi batch yang dikirim ke server hingga lima nama domain. Oleh karena itu, jika daftar pra-resolusi berisi lebih dari lima nama domain, SDK secara otomatis mengirimkannya untuk resolusi secara bertahap.

setPreResolveHosts

Definisi Antarmuka

void setPreResolveHosts(List<String> hostList)
void setPreResolveHosts(List<String> hostList, RequestIpType requestIpType)

Kelas

HttpDnsClient

Parameter

Parameter

Tipe

Wajib

Deskripsi

hostList

List<String>

Ya

Daftar nama domain untuk pra-resolusi. Nama domain yang akan diresolusi harus berupa string nama domain murni. Tidak boleh mengandung header protokol (seperti http://), path, atau port. Jika tidak, pengecualian resolusi dapat terjadi. Nama domain wildcard tidak didukung.

requestIpType

RequestIpType

Tidak

Tipe IP untuk pra-resolusi. Jika parameter ini tidak ditentukan, nilai default adalah `RequestIpType.v4`.

Contoh Kode

List<String> hosts = Arrays.asList("www.example.com", "api.example.com");
client.setPreResolveHosts(hosts, RequestIpType.both);

2.2 Resolusi sinkron non-blocking

  • Operasi resolusi sinkron non-blocking tidak memblokir thread saat ini, tetapi mungkin mengembalikan hasil kosong.

  • Operasi ini hanya menanyakan cache dan mengembalikan hasil resolusi dari cache. Jika tidak ada hasil resolusi dalam cache atau hasil tersebut telah kedaluwarsa, resolusi nama domain dilakukan dalam thread pekerja. Setelah resolusi berhasil, cache diperbarui untuk panggilan resolusi nama domain berikutnya.

getHttpDnsResultForHostSyncNonBlocking

Definisi Antarmuka

HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type)
HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type, String clientIp)
HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type, Map<String, String> params, String cacheKey)
HTTPDNSResult getHttpDnsResultForHostSyncNonBlocking(String host, RequestIpType type, Map<String, String> params, String cacheKey, String clientIp)

Kelas

HttpDnsClient

Parameter

Parameter

Tipe

Wajib

Deskripsi

host

String

Ya

Nama domain yang akan diresolusi.

type

RequestIpType

Ya

Tipe IP yang akan diresolusi. Kami menyarankan Anda menggunakan `RequestIpType.both`.

clientIp

String

Tidak

Alamat IP klien. Digunakan dalam skenario sisi server untuk menentukan alamat IP klien aktual guna mendapatkan hasil resolusi yang lebih akurat.

params

Map<String, String>

Tidak

Parameter tambahan yang dibawa dalam resolusi nama domain, sesuai dengan parameter `event.parameters` dalam fungsi resolusi kustom sisi server.

cacheKey

String

Tidak

Kunci cache lokal untuk nama domain. Saat menggunakan SDNS, Anda harus meneruskan nilai non-null. Jika perubahan pada parameter tambahan memerlukan resolusi ulang dari server, Anda perlu mengubah `cacheKey`.

Nilai Kembalian

Tipe

Deskripsi

HTTPDNSResult

Hasil resolusi.

Contoh Kode

HTTPDNSResult result = client.getHttpDnsResultForHostSyncNonBlocking(
    "www.example.com", 
    RequestIpType.both
);

if (result != null && result.getIps() != null && result.getIps().length > 0) {
    String ip = result.getIps()[0];
}

2.3 Resolusi sinkron

  • Operasi resolusi sinkron memblokir thread saat ini hingga hasil resolusi yang valid diperoleh dan dikembalikan.

  • Operasi ini pertama-tama menanyakan cache. Jika hasil resolusi yang dapat digunakan ada dalam cache, hasil tersebut dikembalikan segera. Jika tidak ada hasil yang dapat digunakan dalam cache, thread yang memanggil resolusi diblokir. Resolusi nama domain dilakukan dalam thread pekerja. Hasil resolusi dikembalikan setelah resolusi selesai, atau nilai kosong dikembalikan jika periode timeout tercapai.

Penting

Waktu total untuk operasi resolusi sinkron dikontrol oleh konfigurasi timeout. Jika resolusi tidak berhasil dalam periode timeout, hasil resolusi kosong dikembalikan segera.

getHttpDnsResultForHostSync

Definisi Antarmuka

HTTPDNSResult getHttpDnsResultForHostSync(String host, RequestIpType type)
HTTPDNSResult getHttpDnsResultForHostSync(String host, RequestIpType type, String clientIp)
HTTPDNSResult getHttpDnsResultForHostSync(String host, RequestIpType type, Map<String, String> params, String cacheKey)
HTTPDNSResult getHttpDnsResultForHostSync(String host, RequestIpType type, Map<String, String> params, String cacheKey, String clientIp)

Kelas

HttpDnsClient

Parameter

Parameter

Tipe

Wajib

Deskripsi

host

String

Ya

Nama domain yang akan diresolusi.

type

RequestIpType

Ya

Tipe IP yang akan diresolusi. Kami menyarankan Anda menggunakan `RequestIpType.both`.

clientIp

String

Tidak

Alamat IP klien. Digunakan dalam skenario sisi server untuk menentukan alamat IP klien aktual.

params

Map<String, String>

Tidak

Parameter tambahan yang dibawa dalam resolusi nama domain, sesuai dengan parameter `event.parameters` dalam fungsi resolusi kustom sisi server.

cacheKey

String

Tidak

Kunci cache lokal untuk nama domain. Saat menggunakan SDNS, Anda harus meneruskan nilai non-null. Jika perubahan pada parameter tambahan memerlukan resolusi ulang dari server, Anda perlu mengubah `cacheKey`.

Nilai Kembalian

Tipe

Deskripsi

HTTPDNSResult

Hasil resolusi.

Contoh Kode

HTTPDNSResult result = client.getHttpDnsResultForHostSync(
    "www.aliyun.com", 
    RequestIpType.both
);

2.4 Resolusi asinkron

  • Operasi resolusi asinkron tidak memblokir thread saat ini. Hasil resolusi dikembalikan melalui callback.

  • Operasi ini pertama-tama menanyakan cache. Jika hasil resolusi yang dapat digunakan ada dalam cache, hasil tersebut segera dikembalikan melalui callback. Jika tidak ada hasil yang dapat digunakan dalam cache, resolusi nama domain dilakukan dalam thread pekerja. Hasil resolusi dikembalikan melalui callback setelah resolusi selesai atau periode timeout tercapai.

Penting

Waktu total untuk operasi resolusi asinkron dikontrol oleh konfigurasi timeout. Jika resolusi tidak berhasil dalam periode timeout, hasil resolusi kosong dikembalikan segera melalui callback.

getHttpDnsResultForHostAsync

Definisi Antarmuka

void getHttpDnsResultForHostAsync(String host, RequestIpType type, HttpDnsCallback callback)
void getHttpDnsResultForHostAsync(String host, RequestIpType type, String clientIp, HttpDnsCallback callback)
void getHttpDnsResultForHostAsync(String host, RequestIpType type, Map<String, String> params, String cacheKey, HttpDnsCallback callback)
void getHttpDnsResultForHostAsync(String host, RequestIpType type, Map<String, String> params, String cacheKey, String clientIp, HttpDnsCallback callback)

Kelas

HttpDnsClient

Parameter

Parameter

Tipe

Wajib

Deskripsi

host

String

Ya

Nama domain yang akan diresolusi.

type

RequestIpType

Ya

Tipe IP yang akan diresolusi. Kami menyarankan Anda menggunakan `RequestIpType.both`.

callback

HttpDnsCallback

Ya

Operasi callback untuk hasil resolusi nama domain.

clientIp

String

Tidak

Alamat IP klien, untuk skenario sisi server.

params

Map<String, String>

Tidak

Parameter tambahan yang dibawa dalam resolusi nama domain, sesuai dengan parameter `event.parameters` dalam fungsi resolusi kustom sisi server.

cacheKey

String

Tidak

Kunci cache lokal untuk nama domain. Saat menggunakan SDNS, Anda harus meneruskan nilai non-null. Jika perubahan pada parameter tambahan memerlukan resolusi ulang dari server, Anda perlu mengubah `cacheKey`.

Contoh Kode

client.getHttpDnsResultForHostAsync("www.example.com", RequestIpType.both, 
    new HttpDnsCallback() {
        @Override
        public void onHttpDnsCompleted(HTTPDNSResult result) {
            if (result != null && result.getIps() != null) {
                String[] ips = result.getIps();
                // Gunakan hasil resolusi.
            }
        }
    });

3. Operasi manajemen cache

3.1 Menghapus cache untuk nama domain tertentu

Pengguna Alibaba Cloud DNS dapat memanggil operasi ini untuk menghapus cache lokal, sehingga perubahan konfigurasi nama domain berlaku dalam hitungan detik.

Sebagai contoh, asumsikan nama domain adalah xxx.com dan alamat IP yang diresolusi adalah ip1. Ketika ip1 sedang diserang, Anda perlu memigrasikan traffic ke ip2. Alurnya sebagai berikut:

  1. Pertama, di Konsol Cloud DNS, ubah alamat IP untuk nama domain menjadi ip2. Server HTTPDNS segera mengambil informasi perubahan ini dan purge cache ip1 untuk nama domain tersebut di sisi server.

  2. Panggil operasi ini secara manual untuk menghapus cache lokal untuk nama domain xxx.com.

  3. Permintaan berikutnya setelah aplikasi menghapus cache menyebabkan sisi server meminta ulang ke server otoritatif untuk mengambil alamat IP yang diresolusi terbaru, yaitu ip2. Hal ini membuat hasil resolusi antarmuka depan segera berlaku sebagai ip2.

cleanHostCache

Definisi Antarmuka

void cleanHostCache(ArrayList<String> hosts)

Kelas

HttpDnsClient

Parameter

Parameter

Jenis

Wajib

Deskripsi

hosts

ArrayList<String>

Ya

Array nama domain host yang akan dihapus. Untuk menghapus semua data, teruskan `null` atau array kosong.

Contoh Kode

// Hapus cache untuk nama domain tertentu.
ArrayList<String> hosts = new ArrayList<>();
hosts.add("www.example.com");
client.cleanHostCache(hosts);

// Hapus semua cache.
client.cleanHostCache(null);

4. Operasi pemecahan masalah dan pelacakan

4.1 Mendapatkan SessionId

Mengambil sessionId yang digunakan untuk melacak proses resolusi. Jika Anda mengalami pengecualian resolusi, berikan informasi ini saat meminta dukungan teknis melalui DingTalk, tiket, atau saluran lainnya.

Catatan

SessionId dihasilkan secara acak, terdiri dari 12 karakter, dan tidak berubah sepanjang siklus hidup aplikasi.

getSessionId

Definisi Antarmuka

String getSessionId()

Kelas

HttpDnsClient

Nilai Kembalian

Type

Deskripsi

String

sessionId

Contoh Kode

String sessionId = client.getSessionId();
System.out.println("SessionId: " + sessionId);

4.2 Mendapatkan nomor versi SDK

Mengambil nomor versi SDK saat ini.

getSdkVersion

Definisi Antarmuka

String getSdkVersion()

Kelas

HttpDnsClient

Nilai Kembalian

Tipe

Deskripsi

String

Nomor versi SDK.

Contoh Kode

String version = client.getSdkVersion();
System.out.println("SDK Version: " + version);

4.3 Kontrol log

HttpDnsLog.enable

Menetapkan apakah akan mengaktifkan pencatatan log untuk HTTPDNS. Secara default dinonaktifkan.

Definisi Antarmuka

static void enable(boolean enable)

Kelas

HttpDnsLog

Parameter

Parameter

Tipe

Wajib

Deskripsi

enable

boolean

Ya

Apakah akan mencetak log.

Contoh Kode

HttpDnsLog.enable(true);

HttpDnsLog.setLogger

Anda dapat mengambil log yang dioutput oleh SDK dengan menetapkan kelas callback log.

Definisi Antarmuka

static void setLogger(ILogger logger)

Kelas

HttpDnsLog

Parameter

Parameter

Jenis

Wajib

Deskripsi

logger

ILogger

Ya

Setelah Anda mengonfigurasi operasi ini, log internal SDK dikembalikan melalui callback antarmuka ILogger. Hal ini memungkinkan Anda mengontrol pencetakan dan penyimpanan log.

Contoh Kode

HttpDnsLog.setLogger(new ILogger() {
    @Override
    public void log(String msg) {
        System.out.println("[HTTPDNS] " + msg);
    }
});

HttpDnsLog.removeLogger

Menghapus kelas callback log.

Definisi Antarmuka

static void removeLogger(ILogger logger)

Kelas

HttpDnsLog

Parameter

Parameter

Tipe

Wajib

Deskripsi

logger

ILogger

Ya

Logger yang sebelumnya ditambahkan.

Contoh Kode

HttpDnsLog.removeLogger(myLogger);

5. Operasi lainnya

5.1 Menetapkan wilayah

Memperbarui node wilayah secara dinamis.

setRegion

Definisi Antarmuka

void setRegion(Region region)

Kelas

HttpDnsClient

Parameter

Parameter

Tipe

Wajib

Deskripsi

region

Region

Ya

Node wilayah. Tetapkan wilayah di luar Tiongkok untuk pemilihan area layanan.

Contoh Kode

client.setRegion(Region.HK);  // Beralih ke node Tiongkok (Hong Kong).

5.2 Koreksi waktu tanda tangan

Setelah Anda melakukan operasi ini, jika terjadi deviasi waktu, waktu perangkat dikoreksi pada setiap permintaan jaringan. Jika Anda tidak melakukan operasi ini, waktu perangkat digunakan.

setAuthCurrentTime

Definisi Antarmuka

void setAuthCurrentTime(long time)

Kelas

HttpDnsClient

Parameter

Parameter

Tipe

Wajib

Deskripsi

time

long

Ya

Stempel waktu UNIX saat ini dalam milidetik.

Contoh Kode

HttpDnsClient client = HttpDnsClient.getClient(accountId);
client.setAuthCurrentTime(System.currentTimeMillis());

6. Struktur data umum

6.1 HTTPDNSResult

Kelas data untuk hasil resolusi yang dikembalikan oleh operasi resolusi nama domain.

getHost

Mengambil nama domain yang sesuai.

Definisi Antarmuka

String getHost()

Nilai Kembalian

Tipe

Deskripsi

String

Nama domain.

getIps

Mengambil alamat IPv4 yang diresolusi.

Definisi Antarmuka

String[] getIps()

Nilai Kembalian

Tipe

Deskripsi

String[]

Alamat IPv4 yang diresolusi untuk nama domain.

getIpv6s

Mengambil alamat IPv6 yang diresolusi.

Definisi Antarmuka

String[] getIpv6s()

Nilai Kembalian

Tipe

Deskripsi

String[]

Alamat IPv6 yang diresolusi untuk nama domain.

getExtras

Mengambil parameter tambahan dari resolusi. Hanya resolusi kustom yang memiliki data ini.

Definisi Antarmuka

String getExtras()

Nilai Kembalian

Tipe

Deskripsi

String

String parameter tambahan.

isExpired

Menunjukkan apakah hasil resolusi telah kedaluwarsa. Kedaluwarsa dihitung berdasarkan waktu hasil diperoleh dan TTL yang dikonfigurasi untuk nama domain.

Definisi Antarmuka

boolean isExpired()

Nilai Kembalian

Tipe

Deskripsi

boolean

`true`: Kedaluwarsa. `false`: Belum kedaluwarsa.

getTtl

Mengambil Time to Live (TTL) dari hasil resolusi.

Definisi Antarmuka

int getTtl()

Nilai Kembalian

Type

Deskripsi

int

TTL, dalam detik.

6.2 RequestIpType

Enumerasi untuk tipe IP yang diminta.

Nilai enumerasi

Deskripsi

v4

Tipe yang diresolusi adalah IPv4.

v6

Tipe yang diresolusi adalah IPv6.

both

Tipe yang diresolusi adalah IPv4 dan IPv6.

Contoh Kode

// Resolusi IPv4 dan IPv6.
HTTPDNSResult result = client.getHttpDnsResultForHostSyncNonBlocking(
    "www.example.com", 
    RequestIpType.both
);

6.3 Region

Enumerasi untuk wilayah node layanan, digunakan untuk memilih wilayah layanan di luar Tiongkok.

Nilai enumerasi

Deskripsi

DEFAULT

Tiongkok daratan (default)

HK

Tiongkok (Hong Kong)

SG

Singapura

DE

Jerman

US

Amerika Serikat

Contoh Kode

new InitConfig.Builder().setRegion(Region.SG);  // Node Singapura

6.4 HttpDnsCallback

Antarmuka callback untuk operasi resolusi nama domain asinkron.

onHttpDnsCompleted

Fungsi callback setelah resolusi selesai. Fungsi ini dipanggil baik untuk keberhasilan maupun kegagalan.

Definisi Antarmuka

void onHttpDnsCompleted(HTTPDNSResult result)

Parameter

Parameter

Tipe

Deskripsi

result

HTTPDNSResult

Objek hasil resolusi.

Contoh Kode

client.getHttpDnsResultForHostAsync("www.example.com", RequestIpType.both, 
    new HttpDnsCallback() {
        @Override
        public void onHttpDnsCompleted(HTTPDNSResult result) {
            if (result != null && result.getIps() != null) {
                // Resolusi berhasil.
            } else {
                // Resolusi gagal atau tidak ada hasil.
            }
        }
    });

6.5 ILogger

Antarmuka log.

log

Metode log.

Definisi Antarmuka

void log(String msg)

Parameter

Parameter

Tipe

Deskripsi

msg

String

Log.

Contoh Kode

HttpDnsLog.setLogger(new ILogger() {
    @Override
    public void log(String msg) {
        // Pemrosesan log kustom.
        System.out.println("[HTTPDNS] " + msg);
    }
});

6.6 CacheTtlChanger

Antarmuka untuk menyesuaikan TTL dari hasil resolusi nama domain.

changeCacheTtl

Menyesuaikan TTL.

Definisi Antarmuka

int changeCacheTtl(String host, RequestIpType type, int ttl)

Parameter

Parameter

Tipe

Deskripsi

host

String

Nama domain.

type

RequestIpType

Tipe IP.

ttl

int

TTL asli.

Deskripsi Respons

Type

Deskripsi

int

TTL yang disesuaikan. Jika tidak perlu penyesuaian, kembalikan TTL asli.

Contoh Kode

new InitConfig.Builder()
    .configCacheTtlChanger(new CacheTtlChanger() {
        @Override
        public int changeCacheTtl(String host, RequestIpType type, int ttl) {
            if ("www.aliyun.com".equals(host)) {
                return ttl * 10;
            }
            return ttl;
        }
    });

6.7 NotUseHttpDnsFilter

Antarmuka untuk memfilter nama domain yang tidak boleh diresolusi oleh HTTPDNS.

notUseHttpDns

Mengonfigurasi nama domain yang tidak boleh diresolusi oleh HTTPDNS.

Definisi Antarmuka

boolean notUseHttpDns(String hostName)

Parameter

Parameter

Tipe

Deskripsi

hostName

String

Nama domain.

Nilai Kembalian

Tipe

Deskripsi

boolean

`true`: Memfilter nama domain saat ini. Nama domain saat ini tidak diresolusi oleh HTTPDNS di cloud. `false`: Tidak memfilter nama domain saat ini. Nama domain saat ini diresolusi oleh HTTPDNS di cloud.

Contoh Kode

new InitConfig.Builder()
    .setNotUseHttpDnsFilter(new NotUseHttpDnsFilter() {
        @Override
        public boolean notUseHttpDns(String hostName) {
            return "www.aliyun.com".equals(hostName);
        }
    });

6.8 IPRankingBean

Item konfigurasi preferensi IP. Setelah Anda mengonfigurasi operasi ini, jika nama domain yang sesuai diresolusi, SDK akan melakukan speed test IP pada alamat IP yang dikembalikan. SDK secara dinamis mengurutkan daftar yang dikembalikan untuk memastikan alamat IP pertama memiliki ketersediaan yang lebih baik.

Konstruktor

IPRankingBean(String hostName, int port)

Parameter

Parameter

Type

Deskripsi

hostName

String

Nama domain untuk pengurutan preferensi IP.

port

int

Port yang digunakan untuk menguji kecepatan.

getHostName

Mengambil nama domain.

Definisi Antarmuka

String getHostName()

getPort

Mengambil port.

Definisi Antarmuka

int getPort()

Contoh Kode

List<IPRankingBean> list = new ArrayList<>();
list.add(new IPRankingBean("www.example.com", 443));
list.add(new IPRankingBean("api.example.com", 8080));

new InitConfig.Builder()
    .setIPRankingList(list);