Android基礎篇:Http連接網絡

這篇文章展示如何以最簡單的方式通過http協議在app上與網絡連接,并進行Json解析。

添加許可

在項目的manifest中添加許可:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

檢查網絡連接

設備可能在網絡范圍之外,或者連接網絡失敗。所以首先需要檢查網絡是否可用,可以通過以下兩個方法: getActiveNetworkInfo() 和 isConnected() 。

在子線程中進行網絡操作

從Android3.0(API level 11)之后,為了防止ANR的發生,Android不允許在主線程中進行網絡操作,如果在主線程中進行,將會產生NetworkOnMainThreadException異常。

在上面的代碼中,類DownloadWebpageTask是類AsyncTask的一個子類,該類實現了AsyncTask的兩個方法:

  • doInBackground(): 執行方法 downloadUrl(),這個方法以 url為參數,該方法連接并取得網頁內容,當它執行結束時,返回一個string字符串
  • onPostExecute(): 得到返回的string字符串,并顯示在UI上

連接網絡并得到數據

在子線程中,通過 HttpURLConnection 的 get 方法創建對象,并通過 connect() 方法連接網絡后,通過 getInputStream() 方法獲得 輸入流InputStream。

注意,其中方法 getResponseCode() 返回連接的狀態碼,狀態碼可以有效的反應出連接的附加信息,比如:200表示網絡連接成功。

將輸入流InputStream轉化為字符串String

下載后得到的輸入流是byte流,得到輸入流后,可以將它轉化為可讀的目標數據,比如圖像、文字等。

在上面的例子中,我們要得到的是字符串,所以這個方法用于將輸入流轉化為字符串后顯示在UI上。

Json解析

Json是一種文本形式的數據交換格式,比XML更輕量,比二進制更容易閱讀和編寫,調用也更方便。這個例子中從網頁得到的數據為Json字符串,接下來要進行的就是解析,Android提供了四個不同的類來解析Json數據,分別為JSONArray、JSONObject、JSONString 和 JSONTokenizer。

Json的解析非常重要,解析和生成方式很多,上面的例子所用的是自帶最基本的類進行的解析,但我們還可以用一些框架來提高效率,常用的類庫有:JSON-Java、Gson、Jackson、FastJson等。

我的Demo

這里的demo要演示的是:在編輯框中輸入要連接的網址url,點擊按鈕connect,與網站連接并獲取數據,將取得的數據以字符串形式顯示在下面,最后進行json解析,分別顯示key值對應的value值。代碼在我的github上,點擊 這里查看

參考資料

Connecting to the Network

Android - JSON Parser

 

來自:http://www.jianshu.com/p/3b1303941c0e

 

 本文由用戶 Luci_Ailan 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!