HttpClient和HttpURLConnection的區別

Android 提供兩個HTTP客戶端,分別是HttpURLConnection客戶端和Apache的HttpClient,android的AndroidHttpClient是對HttpClient的實現。這兩個HTTP客戶端都支持HTTPS協議、流媒體的上傳和下載、配置超時時間、Ipv6協議和鏈接池等。Android官方建議開發者根據API版原本決定使用哪個版本的HTTP客戶端。html

Volley是Android提供的網絡請求開源庫,它底層的HTTP客戶端就是使用了HttpURLConnection和HttpClient。下面的截圖是其實現代碼:
java

if (stack == null) {
    if (Build.VERSION.SDK_INT >= 9) {
        stack = new HurlStack();
    } else {
        // Prior to Gingerbread, HttpUrlConnection was unreliable.
        // See: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
        stack = new HttpClientStack(AndroidHttpClient.newInstance(userAgent));
    }
}

stack變量是執行網絡請求的接口,從Volley的源代碼能夠知道,當API版本超過9時,使用HttpURLConnection,不然使用HttpClient。具體解釋參見Android開發文檔http://android-developers.blogspot.com/2011/09/androids-http-clients.html 。android

有一篇博客對這個問題的解釋很好 http://blog.csdn.net/guolin_blog/article/details/12452307 。網絡

相關文章
相關標籤/搜索