Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android手機衛士(二):構建服務端json、請求網絡數據

Android手機衛士(二):構建服務端json、請求網絡數據

編輯:Android開發實例

  數據的傳遞

  客戶端:發送http請求 http://www.oxx.com/index.jsp?key=value

  服務器:在接受到請求以後,給客戶端發送數據,(json,xml),json數據從數據庫中讀取出來,讀取數據拼接json,語法規則,結構

  獲取服務器版本號(客戶端發請求,服務端給響應,(json,xml))

  http://www.oxxx.com/update.json?key=value 返回200 請求成功,流的方式將數據讀取下來

  json中內容包含:

  /* 更新版本的版本名稱

  * 新版本的描述信息

  * 服務器版本號

  * 新版本apk下載地址*/

  服務器端json數據update.json,文件內容如下:

JavaScript代碼
  1. {  
  2.     "downloadUrl":"http://www.wuyudong.com/XXX.apk",  
  3.     "versionCode":"2";  
  4.     "versionDes":"2.0版本發布了,趕緊來下載啊"  
  5.     "versionName":"2.0"  
  6. }  

  注意: 保存文本為 "UTF-8 無BOM" 格式

  開啟Tomcat,將上面的update.json文件放進ROOT文件夾

  新建工具類streamToString.java,主要作用:流轉換成的字符串。代碼如下:

Java代碼
  1. package com.wuyudong.mobilesafe.Utils;  
  2.   
  3. import java.io.ByteArrayOutputStream;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6.   
  7. public class StreamUtil {  
  8.   
  9.   
  10.     /** 
  11.      * 流轉換成字符串 
  12.      * @param is    流對象 
  13.      * @return    流轉換成的字符串        返回null代表異常 
  14.      */  
  15.     public static String streamToString(InputStream is) {  
  16.           
  17.         //1,在讀取的過程中,將讀取的內容存儲值緩存中,然後一次性的轉換成字符串返回  
  18.         ByteArrayOutputStream bos = new ByteArrayOutputStream();  
  19.         //2,讀流操作,讀到沒有為止(循環)  
  20.         byte[] buffer = new byte[1024];  
  21.         //3,記錄讀取內容的臨時變量  
  22.         int temp = -1;  
  23.         try {  
  24.             while((temp = is.read(buffer)) != -1) {  
  25.                 bos.write(buffer, 0, temp);  
  26.             }  
  27.             //返回讀取數據  
  28.             return bos.toString();  
  29.         } catch (IOException e) {  
  30.             e.printStackTrace();  
  31.         } finally {  
  32.             try {  
  33.                 is.close();  
  34.                 bos.close();  
  35.             } catch (IOException e) {  
  36.                 // TODO Auto-generated catch block  
  37.                 e.printStackTrace();  
  38.             }  
  39.         }  
  40.           
  41.         return null;  
  42.     }  
  43. }  

  然後在中添加請求網絡數據代碼(由於請求網絡服務是耗時操作,所有新開一個線程完成):

Java代碼
  1. /** 
  2.  * 檢測版本號 
  3.  */  
  4. private void checkVersion() {  
  5.     new Thread() {  
  6.         public void run() {  
  7.             // 發送請求獲取數據,參數則為請求json的鏈接地址  
  8.             // http://169.254.13.99:8080/update.json 測試階段不是最優  
  9.             // 僅限於模擬器訪問電腦tomcat  
  10.   
  11.             try {  
  12.                 // 1,封裝url地址  
  13.                 URL url = new URL("http://10.0.2.2:8080/update.json");  
  14.                 // 2,開啟一個鏈接  
  15.                 HttpURLConnection connection = (HttpURLConnection) url.openConnection();  
  16.                 // 3,設置常見請求參數(請求頭)  
  17.                 // 請求超時  
  18.                 connection.setConnectTimeout(2000);  
  19.                 // 讀取超時  
  20.                 connection.setReadTimeout(2000);  
  21.                   
  22.                 // 默認就是get請求方式  
  23.                 //connection.setRequestMethod("POST");  
  24.                   
  25.                 // 4,獲取請求成功響應碼  
  26.                 if(connection.getResponseCode() == 200) {  
  27.                     // 5,以流的形式,將數據獲取下來  
  28.                     InputStream is = connection.getInputStream();  
  29.                     // 6,將流轉換成字符串(工具類封裝)  
  30.                     String json = StreamUtil.streamToString(is);  
  31.                     // 記得添加權限-->android.permission.INTERNET  
  32.                     Log.i(tag, json);                          
  33.                 }  
  34.                   
  35.             } catch (MalformedURLException e) {  
  36.                 // TODO Auto-generated catch block  
  37.                 e.printStackTrace();  
  38.             } catch (IOException e) {  
  39.                 // TODO Auto-generated catch block  
  40.                 e.printStackTrace();  
  41.             }  
  42.         };  
  43.     }.start();  
  44. }  

  運行後可以在logcat中打印下面信息:

  09-23 03:36:36.935: I/SplashActivity(14884): {

  09-23 03:36:36.935: I/SplashActivity(14884): "downloadUrl": "http://www.wuyudong.com/XXX.apk",

  09-23 03:36:36.935: I/SplashActivity(14884): "versionCode": "2",

  09-23 03:36:36.935: I/SplashActivity(14884): "versionDes": "2.0版本發布了,趕緊來下載啊",

  09-23 03:36:36.935: I/SplashActivity(14884): "versionName": "2.0"

  09-23 03:36:36.935: I/SplashActivity(14884): }

  說明請求服務器json數據成功

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved