HttpClient與HttpURLConnection的比較

??HttpClient:由于HttpClient的API數(shù)量過(guò)多,使得我們很難在不破壞兼容性的情況下對(duì)它進(jìn)行升級(jí)和擴(kuò)展。
??HttpURLConnection:它是一種多用途、輕量極的HTTP客戶端,使用它來(lái)進(jìn)行HTTP操作可以適用于大多數(shù)的應(yīng)用程序。由于HttpURLConnection的API比較簡(jiǎn)單,因此可以更加容易地去使用和擴(kuò)展它。
注意:在Android 2.2版本之前,HttpURLConnection一直存在著一些bug。比如說(shuō)對(duì)一個(gè)可讀的InputStream調(diào)用close()方法時(shí),就有可能會(huì)導(dǎo)致連接池失效了。那么我們通常的解決辦法就是直接禁用掉連接池的功能:

private void disableConnectionReuseIfNecessary() {  
    // 處理Android SDK 2.2版本之前的bug  
    if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) {  
          //過(guò)濾掉
    }  
}

??如何在Android 4.0及以后的版本中去啟用響應(yīng)緩存的功能,同時(shí)還不會(huì)影響到之前的版本的做法:

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) {  
    }  
} 

??在Android 2.2版本之前,選擇HttpClient更好,因?yàn)閎ug較少。但Android 2.3版本及以后,HttpURLConnection則是最佳的選擇。它的壓縮和緩存機(jī)制可以有效地減少網(wǎng)絡(luò)訪問(wèn)的流量,在提升速度和省電方面也起到了較大的作用。

參考資料:http://blog.csdn.net/hguang_zjh/article/details/33743249

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容