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 。網絡