編輯:Android編程入門
Android中主要提供了兩種方式來進行HTTP操作,HttpURLConnection和HttpClient。
這兩種方式都支持HTTPS協議、以流的形式進行上傳和下載、配置超時時間、IPv6、以及連接池等功能。
DefaultHttpClient和它的兄弟AndroidHttpClient都是HttpClient具體的實現類,它們都擁有眾多的API,而且實現比較穩定,bug數量也很少。
但同時也由於HttpClient的API數量過多,使得我們很難在不破壞兼容性的情況下對它進行升級和擴展,所以目前Android團隊在提升和優化HttpClient方面的工作態度並不積極。
HttpURLConnection是一種多用途、輕量極的HTTP客戶端,使用它來進行HTTP操作可以適用於大多數的應用程序。雖然HttpURLConnection的API提供的比較簡單,但是同時這也使得我們可以更加容易地去使用和擴展它。
在Android 2.2版本之前,HttpClient擁有較少的bug,因此使用它是最好的選擇。
而在Android 2.3版本及以後,HttpURLConnection則是最佳的選擇。它的API簡單,體積較小,因而非常適用於Android項目。壓縮和緩存機制可以有效地減少網絡訪問的流量,在提升速度和省電方面也起到了較大的作用。對於新的應用程序應該更加偏向於使用
HttpURLConnection代碼:
private void checkVersion() { final long startTime = System.currentTimeMillis(); new Thread(new Runnable() { @Override public void run() { Message msg = mHandler.obtainMessage(); HttpURLConnection conn = null; try { URL url = new URL("http://10.0.2.2:8080/update.json"); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); //請求方法為GET conn.setConnectTimeout(5000); //鏈接超時為5秒 conn.setReadTimeout(5000); //讀取超時為5秒 conn.connect(); int responseCode = conn.getResponseCode(); if ( responseCode == 200 ) { InputStream inputStream = conn.getInputStream(); String result = StreamUtils.readFromStream(inputStream); VersionBean versionBean = parseJsonWithGson(result); mVersionName = versionBean.getVersionName(); mDescription = versionBean.getDescription(); mVersionCode = versionBean.getVersionCode(); mDownLoadUrl = versionBean.getDownLoadUrl(); LogUtils.e(TAG, mDownLoadUrl); if ( mVersionCode > getAppVersionCode() ) { msg.what = CODE_UPDATE_INFO; } else { msg.what = CODE_GO_HOME; } } } catch ( MalformedURLException e ) { msg.what = CODE_URL_ERROR; e.printStackTrace(); } catch ( IOException e ) { msg.what = CODE_NETWORK_ERROR; e.printStackTrace(); } finally { long endTime = System.currentTimeMillis(); long timeUsed = endTime - startTime; if ( timeUsed < 2000 ) { try { Thread.sleep(2000 - timeUsed); } catch ( InterruptedException e ) { e.printStackTrace(); } } mHandler.sendMessage(msg); if ( conn != null ) { conn.disconnect(); } } } }).start(); }
此前編譯過Android4.4的源碼,但是現在Android都到了7.0的版本,不禁讓我感歎Google的步伐真心難跟上,趁這周周末時間比較充裕,於是在過去的24小時裡,
這篇博客為大家介紹一個android常見的功能——ListView下拉刷新(參考自他人博客,網址忘記了,閱讀他的代碼自己理解注釋的,希望能幫助到大
1. HelloWorld項目Application Name : 應用名稱,展示在應用市場和設置中應用列表裡面Project N
我們常常會用到上傳頭像,或者發帖子的時候選擇本地圖片上傳的功能.這個很常見今天因為app的需求我研究了下.現在分享下.其實不論是通過拍照還是從相冊選取都會用到Intent