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.
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:
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.
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.
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.
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.
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.
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.
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:
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.
Panggil operasi ini secara manual untuk menghapus cache lokal untuk nama domain xxx.com.
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.
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 |
| Tipe yang diresolusi adalah IPv4. |
| Tipe yang diresolusi adalah IPv6. |
| 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 |
| Tiongkok daratan (default) |
| Tiongkok (Hong Kong) |
| Singapura |
| Jerman |
| Amerika Serikat |
Contoh Kode
new InitConfig.Builder().setRegion(Region.SG); // Node Singapura6.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);