Android中,HttpURLConnection與Apache的DefaultHttpClient哪個更被推薦使用?
阿新 • • 發佈:2019-01-30
在Android中,請求網路資源的方式包含了:HttpURLConnection和Apache的DefaultHttpClient。那麼,這兩個方式哪個更被推薦使用呢?Android官方文件為我們推薦HttpURLConnection,而理由是什麼呢?
在Android 4.0,為HttpURLConnection增加了一個response cache(響應快取),這是一個很好的減少http請求次數的機制,Android官方推薦使用HttpURLConnection而不是Apache的DefaultHttpClient的原因就是使用HttpURLConnection不僅有針對android做http請求的優化,而且還在4.0上增加了Reponse Cache,這進一步提高了效率。
我們來看看官方的一個例子:使用反射機制開啟HTTP response cache。
private void enableHttpResponseCache() { try { long httpCacheSize = 10 * 1024 * 1024; // 10 MiB File httpCacheDir = new File(getCacheDir(), "http"); Class.forName("android.net.http.HttpResponseCache") .getMethod("install", File.class, long.class) .invoke(null, httpCacheDir, httpCacheSize); } catch (Exception httpResponseCacheNotAvailable) { Log.d(TAG, "HTTP response cache is unavailable."); } }
上面例子,能夠在Android 4.0以上的裝置上開啟response cache,並且不會影響到之前的程式。在cache被開啟之後,所有cache中的HTTP請求都可以直接在本地儲存中進行響應,當Android需要請求同樣的資源時,通過cache,就不需要開啟一個新的網路連線去獲取資源了,而且被cache起來的response可以被server所確保沒有過期,這樣可以有效地減少頻寬;而沒有被cached的response會因方便下次請求而被儲存在response cache中。