Antarmuka konfigurasi merupakan inti dari HTTPDNS Android SDK, yang menangani inisialisasi SDK, konfigurasi parameter, dan penyesuaian saat runtime. Antarmuka ini memungkinkan Anda menyesuaikan perilaku SDK—seperti pengaturan keamanan, kebijakan cache, parameter jaringan, dan optimasi kinerja—sesuai kebutuhan spesifik aplikasi Anda.
Mendapatkan instans layanan
Anda dapat memperoleh instans layanan HTTPDNS. SDK HTTPDNS mendukung beberapa instans, dan ID Akun yang berbeda akan mengembalikan instans yang berbeda.
Setiap instans yang diinisialisasi dengan ID Akun menggunakan pola desain singleton. Setelah diinisialisasi, instans tersebut bertahan sepanjang siklus hidup aplikasi dan tidak dibuat ulang.
getService
Definisi antarmuka
HttpDnsService getService(String accountID)
Versi diperkenalkan
2.6.3
Kelas
HttpDns
Parameter
Parameter | Tipe | Wajib | Deskripsi |
accountID | String | Ya | ID Akun yang ditetapkan oleh sistem. Setelah Anda mengaktifkan HTTPDNS, Anda dapat menemukan ID Akun Anda di Konsol EMAS > [Nama Proyek] > Layanan Platform > HTTPDNS > halaman Konfigurasi Pengembangan. |
Contoh kode
val httpdns = HttpDns.getService(accountID)HttpDnsService httpdns = HttpDns.getService(accountID);Menetapkan konteks
Menetapkan konteks lingkungan aplikasi yang digunakan untuk resolusi HTTPDNS.
setContext
Definisi antarmuka
InitConfig.Builder setContext(Context context)
Versi diperkenalkan
2.6.3
Kelas
InitConfig.Builder
Parameter
Parameter | Tipe | Wajib | Deskripsi |
context | Context | Ya | Menetapkan applicationContext dari aplikasi saat ini. |
Contoh kode
InitConfig.Builder()
.setContext(context)new InitConfig.Builder()
.setContext(context);Menetapkan kunci penandatanganan untuk antarmuka resolusi
Menetapkan kunci yang digunakan untuk menandatangani permintaan resolusi HTTPDNS.
Setelah kunci ditetapkan, SDK akan menandatangani permintaan yang dikirim ke server. Hal ini memungkinkan server HTTPDNS melakukan otentikasi identitas dan proteksi anti-pemalsuan terhadap permintaan resolusi, sehingga meningkatkan keamanan interaksi antara SDK dan server.
setSecretKey
Definisi antarmuka
InitConfig.Builder setSecretKey(String secretKey)
Antarmuka ini tidak memengaruhi metode penagihan.
Untuk mencegah kebocoran informasi akibat dekompilasi berbahaya, aktifkan obfuscation dan perkuat aplikasi Anda sebelum dipublikasikan.
Versi diperkenalkan
2.6.3
Kelas
InitConfig.Builder
Parameter
Parameter | Tipe | Wajib | Deskripsi |
secretKey | String | Ya | Kunci penandatanganan. |
Contoh kode
InitConfig.Builder()
.setSecretKey(secretKey)new InitConfig.Builder()
.setSecretKey(secretKey);Menetapkan kunci enkripsi untuk antarmuka resolusi
Menetapkan kunci yang digunakan untuk enkripsi selama resolusi HTTPDNS.
Setelah kunci enkripsi ditetapkan, SDK menggunakan algoritma Standar Enkripsi Lanjutan (AES) untuk mengenkripsi parameter permintaan dan hasil tanggapan. Enkripsi ini memberikan keamanan yang lebih tinggi, tetapi logika penagihannya berbeda. Untuk informasi lebih lanjut tentang penagihan, lihat Penagihan Produk.
setAesSecretKey
Definisi antarmuka
InitConfig.Builder setAesSecretKey(String aesSecretKey)
Untuk mencegah kebocoran informasi akibat dekompilasi berbahaya, aktifkan obfuscation dan perkuat aplikasi Anda sebelum dipublikasikan.
Versi diperkenalkan
2.6.3
Kelas
InitConfig.Builder
Parameter
Parameter | Tipe | Wajib | Deskripsi |
aesSecretKey | String | Ya | Kunci enkripsi. |
Contoh kode
InitConfig.Builder()
.setAesSecretKey(aesSecretKey)new InitConfig.Builder()
.setAesSecretKey(aesSecretKey);Menggunakan permintaan HTTPS
Secara default, SDK HTTPDNS menggunakan protokol HTTP untuk mengirim permintaan resolusi. Untuk menggunakan protokol HTTPS sebagai gantinya, Anda harus mengonfigurasi SDK agar menggunakan HTTPS untuk resolusi nama domain.
Penggunaan permintaan HTTPS memberikan keamanan yang lebih tinggi, tetapi penagihan untuk permintaan HTTP dan HTTPS berbeda. Untuk informasi lebih lanjut tentang penagihan, lihat Penagihan Produk.
setEnableHttps
Definisi antarmuka
InitConfig.Builder setEnableHttps(boolean enableHttps)
HTTPS dan enkripsi AES beroperasi pada lapisan yang berbeda. Protokol HTTPS menjamin keamanan lapisan transportasi. Namun, parameter dan detail tanggapan masih dapat dilihat dengan menangkap paket. Enkripsi AES mengamankan lapisan layanan HTTPDNS, sehingga mencegah isi teks biasa terlihat meskipun paket berhasil ditangkap. Oleh karena itu, Anda dapat mengaktifkan kedua fitur tersebut sesuai kebutuhan.
Versi diperkenalkan
2.2.2
Kelas
InitConfig.Builder
Parameter
Parameter | Tipe | Wajib | Deskripsi |
enableHttps | boolean | Ya | Menentukan apakah akan menggunakan protokol HTTPS untuk resolusi nama domain.
|
Contoh kode
InitConfig.Builder()
.setEnableHttps(true)new InitConfig.Builder()
.setEnableHttps(true);Izinkan penggunaan alamat IP yang telah kedaluwarsa
SDK mengikuti protokol DNS dan menyimpan cache hasil resolusi nama domain berdasarkan Time to Live (TTL)-nya. Hal ini meningkatkan efisiensi dalam memperoleh alamat IP ketika aplikasi Anda memulai permintaan jaringan. Saat cache kedaluwarsa, skenario berikut terjadi jika aplikasi memanggil antarmuka resolusi untuk memperoleh alamat IP:
Jika aplikasi memanggil antarmuka sinkron non-blocking saat cache telah kedaluwarsa, SDK tidak dapat langsung mengambil hasil resolusi baru dari server. Untuk menghindari pemblokiran thread, antarmuka tersebut mengembalikan hasil kosong. Pemanggil kemudian harus beralih ke resolusi Local DNS.
Jika aplikasi memanggil antarmuka sinkron atau asinkron, SDK mengirim permintaan resolusi untuk mengambil hasil baru dari server. Proses ini memerlukan waktu tertentu. Antarmuka sinkron akan memblokir thread hingga hasil baru diperoleh, sedangkan antarmuka asinkron hanya akan memanggil callback setelah hasil baru diperoleh.
SDK menyediakan opsi untuk menggunakan kembali alamat IP yang telah kedaluwarsa. Jika opsi ini diatur ke true, antarmuka dapat langsung mengembalikan alamat IP yang telah kedaluwarsa dalam kedua skenario di atas, meskipun alamat IP dalam cache telah kedaluwarsa. Hal ini mengurangi waktu pemrosesan untuk resolusi DNS dan meningkatkan kinerja permintaan jaringan. Secara bersamaan, ketika SDK mendeteksi bahwa alamat IP telah kedaluwarsa, SDK segera memulai thread asinkron untuk meresolusi nama domain dan mengambil hasil baru.
Opsi ini memiliki efek samping minimal, terutama ketika konfigurasi resolusi nama domain tidak sering berubah, seperti pada nama domain situs utama atau gerbang statis. Jika resolusi nama domain memang berubah, mengaktifkan opsi ini hanya memengaruhi permintaan pertama setelah cache nama domain kedaluwarsa. Hal ini karena ketika SDK dipanggil dan menemukan alamat IP yang telah kedaluwarsa, SDK selalu langsung memulai pembaruan resolusi untuk nama domain tersebut.
Fitur ini diaktifkan secara default.
Saat diatur ke true, SDK mengembalikan alamat IP yang telah kedaluwarsa secara real-time dan melakukan pembaruan asinkron untuk mengambil informasi IP terbaru.
setEnableExpiredIp
Definisi antarmuka
InitConfig.Builder setEnableExpiredIp(boolean enableExpiredIp)
Versi diperkenalkan
2.2.2
Kelas
InitConfig.Builder
Parameter
Parameter | Tipe | Wajib | Deskripsi |
enableExpiredIp | boolean | Ya | Menentukan apakah akan mengizinkan pengembalian alamat IP yang telah melebihi TTL-nya.
|
Contoh kode
InitConfig.Builder()
.setEnableExpiredIp(true)new InitConfig.Builder()
.setEnableExpiredIp(true);Aktifkan cache lokal
Fitur cache persistensi dirancang untuk mengoptimalkan waktu yang dihabiskan untuk resolusi nama domain setelah startup, sehingga meningkatkan kecepatan pemuatan layar pertama.
Jika diaktifkan, HTTPDNS menyimpan hasil resolusi terakhir ke lapisan persistensi lokal. Setelah aplikasi dimulai ulang, resolusi pertama untuk setiap nama domain akan mengambil hasil cache dari lapisan persistensi terlebih dahulu, mencapai efisiensi resolusi tercepat. Dengan demikian, alamat IP pertama yang digunakan mungkin merupakan alamat IP yang telah kedaluwarsa, artinya TTL-nya dalam cache telah habis. Namun, dalam kebanyakan kasus, alamat IP ini masih dapat digunakan, terutama untuk nama domain dengan rekaman DNS yang stabil.
Untuk menghindari penggunaan ulang cache yang telah kedaluwarsa terlalu lama setelah aplikasi dimulai (misalnya, jika aplikasi terakhir kali dijalankan sebulan yang lalu), antarmuka ini menyediakan parameter expiredThresholdMillis. Saat aplikasi dimulai dan memuat cache dari lapisan persistensi ke memori, parameter ini menentukan apakah hasil resolusi yang telah kedaluwarsa lebih lama dari durasi expiredThresholdMillis akan dibuang. Kami merekomendasikan menetapkan nilai ini menjadi satu hari.
Fitur ini dinonaktifkan secara default.
setEnableCacheIp
Definisi antarmuka
InitConfig.Builder setEnableCacheIp(boolean enableCacheIp, long expiredThresholdMillis)
Saat Anda mengaktifkan cache lokal, Anda dapat menentukan bahwa hasil cache lokal akan dipurge setelah kedaluwarsa selama periode tertentu.
Jika alamat IP server bisnis Anda sering berubah, gunakan fitur ini dengan hati-hati untuk menghindari dampak pada operasi bisnis Anda.
Cache persistensi hanya memengaruhi hasil resolusi nama domain pertama. Resolusi berikutnya tetap meminta server HTTPDNS dan memperbarui cache lokal.
Setelah Anda mengaktifkan fitur ini, setiap catatan resolusi jaringan diperbarui dalam cache lokal. Setelah aplikasi dimulai ulang, cache lokal dimuat terlebih dahulu ke memori.
Versi diperkenalkan
2.4.3
Kelas
InitConfig.Builder
Parameter
Parameter | Tipe | Wajib | Deskripsi |
enableCacheIp | boolean | Ya | Mengontrol apakah akan mengaktifkan cache lokal.
|
expiredThresholdMillis | long | Ya | Saat antarmuka ini dipanggil, SDK memuat catatan dari cache lokal ke cache memori. Catatan cache lokal yang telah kedaluwarsa lebih lama dari Unitnya adalah milidetik. Nilai default adalah 0 ms, yang berarti catatan yang telah kedaluwarsa dibuang secara default. Nilai maksimum adalah satu tahun. |
Contoh kode
InitConfig.Builder()
.setEnableCacheIp(true, DateUtils.YEAR_IN_MILLIS)new InitConfig.Builder()
.setEnableCacheIp(true, DateUtils.YEAR_IN_MILLIS);setEnableCacheIp
Definisi antarmuka
InitConfig.Builder setEnableCacheIp(boolean enableCacheIp)
Saat Anda memanggil metode ini, SDK memuat catatan dari cache persistensi lokal ke cache memori. Catatan cache lokal yang telah kedaluwarsa akan dipurge.
Versi diperkenalkan
2.2.2
Kelas
InitConfig.Builder
Parameter
Parameter | Tipe | Wajib | Deskripsi |
enableCacheIp | boolean | Ya | Mengontrol apakah akan mengaktifkan cache lokal.
|
Contoh kode
InitConfig.Builder()
.setEnableCacheIp(true)new InitConfig.Builder()
.setEnableCacheIp(true);Aktifkan resolusi otomatis saat jaringan berubah
Ketika jaringan perangkat berubah (misalnya, beralih dari jaringan Wi-Fi ke jaringan seluler, atau dari satu penyedia layanan seluler ke penyedia lainnya), alamat IP yang sebelumnya di-cache oleh SDK HTTPDNS dapat menyebabkan permintaan bisnis lintas jaringan, yang berpotensi memengaruhi kinerja dan tingkat keberhasilan permintaan. Oleh karena itu, SDK secara internal mendengarkan event perubahan jaringan dan secara cerdas memutuskan apakah akan memurge cache resolusi global.
Antarmuka ini digunakan untuk mengonfigurasi apakah SDK secara otomatis memperbarui hasil resolusi untuk semua nama domain setelah lingkungan jaringan berubah dan cache resolusi global dipurge. Jika diaktifkan, permintaan jaringan bisnis dapat langsung mengambil hasil baru setelah pergantian jaringan, sehingga mengurangi waktu yang dihabiskan untuk resolusi nama domain dan meningkatkan kinerja permintaan.
Mengaktifkan fitur ini dapat sedikit meningkatkan jumlah permintaan resolusi. Fitur ini dinonaktifkan secara default.
Pergantian antara Wi-Fi, jaringan seluler, dan tanpa jaringan dianggap sebagai transisi jaringan.
Pergantian antara 4G dan 3G tidak dianggap sebagai transisi jaringan.
Pergantian kartu SIM tidak ditangani secara terpisah.
setPreResolveAfterNetworkChanged
Definisi antarmuka
InitConfig.Builder setPreResolveAfterNetworkChanged(boolean enable)
Versi diperkenalkan
2.4.0
Kelas
InitConfig.Builder
Parameter
Parameter | Tipe | Wajib | Deskripsi |
enable | boolean | Ya | Menentukan apakah akan meresolusi ulang semua nama domain dalam cache saat jaringan berubah.
|
Contoh kode
InitConfig.Builder()
.setPreResolveAfterNetworkChanged(true)new InitConfig.Builder()
.setPreResolveAfterNetworkChanged(true);Konfigurasi waktu habis
Menetapkan periode waktu habis untuk resolusi nama domain. Nilai default adalah 2000 ms.
setTimeoutMillis
Definisi antarmuka
InitConfig.Builder setTimeoutMillis(int timeoutInterval)
Versi diperkenalkan
2.4.0
Kelas
InitConfig.Builder
Parameter
Parameter | Tipe | Wajib | Deskripsi |
timeoutInterval | int | Ya | Menetapkan periode waktu habis untuk resolusi nama domain, dalam milidetik. Nilai default adalah 2000 ms. Nilai maksimum adalah 5000 ms. |
Contoh kode
InitConfig.Builder()
setTimeoutMillis.(2 * 1000)new InitConfig.Builder()
.setTimeoutMillis(2 * 1000);Koreksi waktu penandatanganan aplikasi
Setelah Anda melakukan operasi ini, jika terjadi deviasi waktu, waktu perangkat akan dikoreksi pada setiap permintaan jaringan. Jika tidak, waktu perangkat akan digunakan.
Skenario: Waktu pada perangkat seluler mungkin tidak akurat.
Koreksi ini berlaku untuk satu siklus hidup aplikasi. Setelah aplikasi dimulai ulang, Anda harus menyetelnya lagi agar berlaku. Anda dapat menyetelnya berulang kali.
Anda memerlukan layanan waktu, yang dapat Anda bangun sendiri. Antarmuka timestamp sederhana sudah cukup. Minta waktu yang benar dari layanan waktu ini, lalu berikan waktu tersebut ke antarmuka ini. SDK kemudian akan mengetahui selisih waktunya.
setAuthCurrentTime
Definisi antarmuka
void setAuthCurrentTime(long time)
Versi diperkenalkan
1.3.2
Kelas
HttpDnsService
Parameter
Parameter | Tipe | Wajib | Deskripsi |
time | long | Ya | Timestamp saat ini. |
Contoh kode
val httpdns = HttpDns.getService(accountID)
httpdns?.setAuthCurrentTime(System.currentTimeMillis())HttpDnsService httpdns = HttpDns.getService(accountID);
httpdns.setAuthCurrentTime(System.currentTimeMillis());Menetapkan node wilayah
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 node ditetapkan, SDK akan menggunakannya untuk resolusi nama domain dan pembaruan berikutnya pada daftar node penjadwalan.
setRegion
Menetapkan wilayah layanan selama inisialisasi.
Definisi antarmuka
InitConfig.Builder setRegion(Region region)
Versi diperkenalkan
2.4.2
Kelas
InitConfig.Builder
Parameter
Parameter | Tipe | Wajib | Deskripsi |
region | Ya | Node wilayah. Tetapkan wilayah di luar Tiongkok untuk memilih area layanan di luar Tiongkok. |
setRegion
Memperbarui wilayah layanan.
Definisi antarmuka
void setRegion(Region region)
Versi yang Diperkenalkan
2.4.2
Kelas
HttpDnsService
Parameter
Parameter | Tipe | Wajib | Deskripsi |
region | Ya | Node wilayah. Tetapkan wilayah di luar Tiongkok untuk memilih area layanan di luar Tiongkok. |
setRegion
Memperbarui wilayah layanan.
Definisi antarmuka
void setRegion(String region)
Versi diperkenalkan
1.3.2
Kelas
HttpDnsService
Parameter
Parameter | Tipe | Wajib | Deskripsi |
region | String | Ya | Node wilayah. Tetapkan wilayah di luar Tiongkok untuk memilih area layanan di luar Tiongkok. Saat ini, hanya didukung `hk` (node Tiongkok (Hong Kong)), `sg` (node Singapura), `de` (node Jerman), dan `us` (node AS). Setelah Anda menentukan wilayah, node layanan lokal akan dikembalikan. Penting Jika aplikasi Anda menggunakan HTTPDNS di lingkungan di luar Tiongkok, tetapkan node layanan yang sesuai di luar Tiongkok untuk meningkatkan efisiensi resolusi. |
Menyesuaikan TTL hasil resolusi
Secara default, TTL yang disediakan oleh server digunakan untuk menentukan apakah setiap hasil resolusi telah kedaluwarsa. Untuk memodifikasi TTL hasil resolusi, Anda dapat mengonfigurasinya menggunakan antarmuka berikut.
configCacheTtlChanger
Definisi antarmuka
InitConfig.Builder configCacheTtlChanger(CacheTtlChanger changer)
Versi diperkenalkan
2.3.0
Kelas
InitConfig.Builder
Definisi parameter
Parameter | Tipe | Wajib | Deskripsi |
changer | Ya | Menyesuaikan TTL. |
Contoh kode
InitConfig.Builder().configCacheTtlChanger { host, requestIpType, ttl ->
if (TextUtils.equals(host, "www.aliyun.com")) {
// Gunakan www.aliyun.com sebagai contoh.
ttl * 10
} else ttl
}new InitConfig.Builder().configCacheTtlChanger(new CacheTtlChanger() {
@Override
public int changeCacheTtl(String host, RequestIpType requestIpType, int ttl) {
// Gunakan www.aliyun.com sebagai contoh.
if (TextUtils.equals(host, "www.aliyun.com")) {
return ttl * 10;
}
return ttl;
}
});Menetapkan blacklist nama domain untuk HTTPDNS
Untuk mencegah nama domain tertentu diselesaikan menggunakan HTTPDNS, Anda dapat memfilternya menggunakan antarmuka ini. Nama domain yang difilter akan mengembalikan hasil resolusi kosong. Anda kemudian harus beralih ke DNS lokal untuk resolusi nama domain.
setNotUseHttpDnsFilter
Definisi antarmuka
InitConfig.Builder setNotUseHttpDnsFilter(NotUseHttpDnsFilter filter)
Versi diperkenalkan
2.4.0
Kelas
InitConfig.Builder
Parameter
Parameter | Tipe | Wajib | Deskripsi |
filter | Ya | Mengonfigurasi kebijakan blacklist. |
Contoh kode
InitConfig.Builder().setNotUseHttpDnsFilter { hostName ->
TextUtils.equals(
hostName,
"www.aliyun.com"
)
}new InitConfig.Builder().setNotUseHttpDnsFilter(new NotUseHttpDnsFilter() {
@Override
public boolean notUseHttpDns(String hostName) {
return TextUtils.equals(hostName, "www.aliyun.com");
}
});Aktifkan probing IP
Menetapkan daftar probing IP. Setelah antarmuka ini ditetapkan, jika nama domain yang sesuai diselesaikan, SDK akan melakukan pengujian kecepatan IP pada alamat IP yang dikembalikan. SDK kemudian akan mengurutkan daftar yang dikembalikan secara dinamis untuk memastikan alamat IP pertama memiliki ketersediaan yang lebih baik.
Hanya alamat IPv4 yang didukung untuk probing IP.
setIPRankingList
Definisi antarmuka
InitConfig.Builder setIPRankingList(List<IPRankingBean> ipRankingList)
Versi diperkenalkan
2.3.2
Kelas
InitConfig.Builder
Parameter
Parameter | Tipe | Wajib | Deskripsi |
ipRankingList | List<IPRankingBean> | Ya | Daftar probing IP. Jika nama domain dalam daftar ini diselesaikan, SDK akan melakukan pengujian kecepatan pada alamat IP yang dikembalikan dan mengurutkannya agar alamat IP dengan ketersediaan terbaik berada di posisi pertama. |
Contoh kode
val list = ArrayList<IPRankingBean>()
list.add(IPRankingBean("www.aliyun.com", 8080))
InitConfig.Builder().setIPRankingList(list)ArrayList<IPRankingBean> list = new ArrayList<IPRankingBean>();
list.add(new IPRankingBean("www.aliyun.com", 8080));
new InitConfig.Builder().setIPRankingList(list);Menetapkan parameter global untuk resolusi kustom
Parameter global ini digabungkan dengan parameter tambahan dari antarmuka resolusi kustom. Operasi penggabungan ini tidak memengaruhi pengaturan parameter dari antarmuka resolusi kustom.
setSdnsGlobalParams
Definisi antarmuka
InitConfig.Builder setSdnsGlobalParams(Map<String, String> params)
Versi diperkenalkan
2.4.0
Kelas
InitConfig.Builder
Parameter
Parameter | Tipe | Wajib | Deskripsi |
params | Map<String, String> | Ya | Parameter global untuk resolusi kustom. Setiap permintaan resolusi kustom mencakup parameter global ini. |
Contoh kode
val params: MutableMap<String, String> = HashMap()
params["level"] = "1"
InitConfig.Builder()
.setSdnsGlobalParams(params)Map<String, String> params = new HashMap<>();
params.put("level", "1");
new InitConfig.Builder()
.setSdnsGlobalParams(params);