擷取服務執行個體
擷取HTTPDNS服務執行個體,HTTPDNS SDK支援多執行個體,不同的Account ID會返回不同的執行個體。
每個Account ID初始化的執行個體採用單例設計模式,一旦初始化完成,該執行個體將持續存在於整個App生命週期中,不會重複建立。
getService
介面定義
HttpDnsService getService(Context applicationContext, String accountID);
所屬類
HttpDns
引入版本
1.2.3
廢棄版本
2.6.3
替代介面
HttpDnsService getService(String accountID)
InitConfig.Builder setContext(Context context)
參數說明
參數 | 類型 | 是否必填 | 說明 |
applicationContext | Context | 是 | 您的Android App Context。 |
accountID | String | 是 | 系統分配的Account ID,當您開通HTTPDNS後,您可在EMAS控制台 > xx專案 > 平台服務 > HTTPDNS > 開發配置頁面擷取到您對應的Account ID資訊。 |
getService
介面定義
HttpDnsService getService(Context applicationContext, String accountID, String secretKey);
所屬類
HttpDns
引入版本
1.3.2
廢棄版本
2.6.3
替代介面
HttpDnsService getService(String accountID)
InitConfig.Builder setContext(Context context)
InitConfig.Builder setSecretKey(String secretKey)
參數說明
參數 | 類型 | 是否必填 | 說明 |
applicationContext | Context | 是 | 您的Android App Context。 |
accountID | String | 是 | 系統分配的Account ID,當您開通HTTPDNS後,您可在EMAS控制台 > xx專案 > 平台服務 > HTTPDNS > 開發配置頁面擷取到您對應的Account ID資訊。 |
secretKey | String | 是 | 鑒權對應的secretKey。 |
是否使用HTTPS請求
HTTPDNS SDK進行網域名稱解析時,預設是通過HTTP協議發起解析請求,如果需要使用HTTPS協議發起解析請求,需要配置使用HTTPS協議進行網域名稱解析。
使用HTTPS請求將會獲得更高的安全性,但也要關注HTTP和HTTPS兩種方式在計費上的不同。關於計費邏輯可參考產品計費。
setHTTPSRequestEnabled
介面定義
void setHTTPSRequestEnabled(boolean enableHttps)
所屬類
HttpDnsService
引入版本
1.3.2
移除版本
2.4.0
替代介面
InitConfig.Builder setEnableHttps(boolean enableHttps)
參數說明
參數 | 類型 | 是否必填 | 說明 |
enableHttps | boolean | 是 | 設定是否使用https協議解析網域名稱。
|
是否允許使用到期IP
遵循DNS協議,按照TTL緩衝網域名稱解析結果,從而提升App在發起網路請求時擷取IP的效率。當緩衝到期後,若App調用解析介面擷取IP,此時會有不同情況:
如果App調用的是同步非阻塞介面,因為緩衝已到期,但SDK又無法立即從服務端獲得新的解析結果,為了不阻塞線程,該介面將返回空結果,需要調用方做降級到LocalDNS解析的處理。
如果App調用的是同步介面或非同步介面,則SDK會發起解析請求從服務端擷取新的解析,這個過程需要一定時間,則同步介面會阻塞線程直到獲得新的解析結果,非同步介面將在獲得新的解析結果後才回調。
SDK提供設定選項,允許複用到期IP,設定為true後,則上述兩種情況,雖然緩衝的IP到期了,但介面仍然可以立即返回這個到期的IP,從而減少DNS環節處理時間,提升網路請求效能。同時,SDK發現該IP到期,返回後,也會立即啟動非同步線程對這個網域名稱進行解析,從而擷取新的解析結果。
因此,開啟這個選項的副作用非常小,特別是在,所解析網域名稱本身的解析配置不會頻繁變動時(如主站網域名稱、靜態網關網域名稱等)。若網域名稱確實發生解析變更,則開啟該選項也只會影響該網域名稱緩衝到期後的第一個請求,因為SDK在被調用時發現IP到期,總是會立即發起對這個網域名稱的解析更新。
預設允許。
當設定為true時,SDK在即時返回到期IP的同時依然會進行非同步更新以擷取最新的IP資訊。
setExpiredIPEnabled
介面定義
void setExpiredIPEnabled(boolean enableExpiredIp)
所屬類
HttpDnsService
引入版本
1.3.2
移除版本
2.4.0
替代介面
InitConfig.Builder setEnableExpiredIp(boolean enableExpiredIp)
參數說明
參數 | 類型 | 是否必填 | 說明 |
enableExpiredIp | boolean | 是 | 設定是否允許返回超過ttl 的ip。
|
是否開啟本機快取
持久化緩衝功能旨在最佳化啟動後的網域名稱解析環節耗時,進而提升首屏載入速度。
開啟後,HTTPDNS會將上一次解析到的結果儲存到本地持久層,App重啟後,每個網域名稱首次解析會優先從持久層擷取緩衝結果,以實現最快的解析效率。也正因如此,存在第一次使用的IP為到期IP的可能性,即該緩衝結果TTL已到期。但大多數情況下該IP依然可以正常使用,特別是對於解析記錄比較穩定的網域名稱。
setCachedIPEnabled
介面定義
void setCachedIPEnabled(boolean enableCacheIp)
void setCachedIPEnabled(boolean enableCacheIp, boolean cleanLocalCache)
所屬類
HttpDnsService
引入版本
1.3.2
移除版本
2.4.0
替代介面
InitConfig.Builder setEnableCacheIp(boolean enableCacheIp)
參數說明
參數 | 類型 | 是否必填 | 說明 |
enableCacheIp | boolean | 是 | 控制是否啟用本機快取。
|
cleanLocalCache | boolean | 否 | 設定讀取本機快取之後,是否清除本機快取。 啟用持久化緩衝時生效。
預設是false。 |
是否開啟網路變化自動解析
當裝置網路變化時(如從WIFI網路切換到蜂窩網路,或從移動網路切換到聯通網路),若HTTPDNS SDK繼續返回之前緩衝的解析IP,則可能導致業務網路請求發生跨網情況,影響請求效能和成功率。因此,SDK內部會監聽網路變化事件,智能決定是否清理全域解析緩衝。
此介面用於設定網路環境變化,SDK清理全域解析緩衝後,是否自動重新整理所有網域名稱的解析結果,若開啟,則保證切換網路後,業務網路請求也能立即拿到新的結果,降低網域名稱解析環節耗時,進而提升請求效能。
開啟此功能可能會輕微增加解析次數消耗。預設不開啟。
WiFi、蜂窩、無網這三個狀態的切換算網路切換。
4G與3G切換不算網路切換。
SIM卡切換也不會單獨處理。
setPreResolveAfterNetworkChanged
介面定義
void setPreResolveAfterNetworkChanged(boolean enable)
所屬類
HttpDnsService
引入版本
1.3.2
移除版本
2.4.0
替代介面
InitConfig.Builder setPreResolveAfterNetworkChanged(boolean enable)
參數說明
參數 | 類型 | 是否必填 | 說明 |
enable | boolean | 是 | 設定是否在網路切換時,重新解析緩衝中的所有網域名稱。
|
逾時配置
設定網域名稱解析逾時時間,預設為2000ms。
setTimeout
介面定義
InitConfig.Builder setTimeout(int timeoutInterval)
所屬類
InitConfig.Builder
引入版本
2.0.2
廢棄版本
2.4.0
替代介面
InitConfig.Builder setTimeoutMillis(int timeoutInterval)
參數說明
參數 | 類型 | 是否必填 | 說明 |
timeoutInterval | int | 是 | 設定網域名稱解析逾時時間,時間單位為毫秒。 預設2000ms,最大5000ms。 |
程式碼範例
InitConfig.Builder()
.setTimeout(2 * 1000)new InitConfig.Builder()
.setTimeout(2 * 1000);setTimeoutInterval
介面定義
void setTimeoutInterval(int timeoutInterval)
所屬類
HttpDnsService
引入版本
1.3.2
移除版本
2.4.0
替代介面
InitConfig.Builder setTimeoutMillis(int timeoutInterval)
參數說明
參數 | 類型 | 是否必填 | 說明 |
timeoutInterval | int | 是 | 設定網域名稱解析逾時時間,時間單位為毫秒。 逾時時間長度,預設2000ms,最大5000ms |
設定region節點
如果APP需要在海外環境使用HTTPDNS,為了提升解析效率,可以主動設定本SDK的啟動服務節點。設定節點後,SDK會使用該節點進行網域名稱解析和進行隨後的調度節點列表更新。
setRegion
初始化設定region節點。
介面定義
InitConfig.Builder setRegion(String region)
所屬類
InitConfig.Builder
引入版本
1.3.2
廢棄版本
2.4.2
替代介面
InitConfig.Builder setRegion(Region region)
參數說明
參數 | 類型 | 是否必填 | 說明 |
region | String | 是 | region為節點,設定海外region,用于海外服務地區選取項目,當前僅支援hk(中國香港節點)、sg(新加坡節點)、de(德國節點)和us(美國節點),填寫後返回當地的服務節點。 預設時,使用中國內地服務節點。 |
程式碼範例
InitConfig.Builder()
.setRegion("hk");new InitConfig.Builder()
.setRegion("hk");設定HTTPDNS的網域名稱黑名單
如果您需要對特定網域名稱限制不使用HTTPDNS去進行網域名稱解析,可以在這個介面裡過濾掉這些網域名稱,被過濾的網域名稱會返回空的解析結果,您需要降級到local dns進行網域名稱解析。
setDegradationFilter
介面定義
InitConfig.Builder setDegradationFilter(DegradationFilter filter)
所屬類
InitConfig.Builder
引入版本
2.4.0
廢棄版本
2.4.0
替代介面
InitConfig.Builder setNotUseHttpDnsFilter(NotUseHttpDnsFilter filter)
參數說明
參數 | 類型 | 是否必填 | 說明 |
filter | 是 | 配置黑名單策略 |
setIPRankingList
介面定義
void setIPRankingList(List<IPRankingBean> ipRankingList)
所屬類
HttpDnsService
引入版本
2.3.2
移除版本
2.4.0
替代介面
InitConfig.Builder setIPRankingList(List<IPRankingBean> ipRankingList)
參數說明
參數 | 類型 | 是否必填 | 說明 |
ipRankingList | List<IPRankingBean> | 是 | 設定IP優選列表,設定該介面後,如果解析了相應的網域名稱,則SDK會對返回的IP進行IP測速,對返回的列表進行動態排序,以保證第一個IP是可用性較好的IP。 |
setIPProbeList
介面定義
void setIPProbeList(List<IPRankingBean> ipProbeList)
所屬類
HttpDnsService
引入版本
1.3.2
廢棄版本
2.3.2
移除版本
2.3.2
替代介面
InitConfig.Builder setIPRankingList(List<IPRankingBean> ipRankingList)
參數說明
參數 | 類型 | 是否必填 | 說明 |
ipProbeList | List<IPProbeItem> | 是 | 設定IP優選列表,設定該介面後,如果解析了相應的網域名稱,則SDK會對返回的IP進行IP測速,對返回的列表進行動態排序,以保證第一個IP是可用性較好的IP。 |
設定自訂解析全域參數
該全域參數不影響自訂解析介面的額外參數設定,會和自訂解析介面的額外參數合并。
setSdnsGlobalParams
介面定義
void setSdnsGlobalParams(Map<String, String> params)
所屬類
HttpDnsService
引入版本
1.3.2
移除版本
2.4.0
替代介面
InitConfig.Builder setSdnsGlobalParams(Map params)
參數說明
參數 | 類型 | 是否必填 | 說明 |
params | Map<String, String> | 是 | 用於自訂解析,全域參數,每個自訂解析請求都會攜帶這些全域參數。 |