標籤:
本文地址:http://www.cnblogs.com/wuyudong/p/5900384.html,轉載請註明源地址。
資料的傳遞
用戶端:發送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,檔案內容如下:
{ "downloadUrl":"http://www.wuyudong.com/XXX.apk", "versionCode":"2"; "versionDes":"2.0版本發布了,趕緊來下載啊" "versionName":"2.0"}
注意: 儲存文本為 "UTF-8 無BOM" 格式
開啟Tomcat,將上面的update.json檔案放進ROOT檔案夾
建立工具類streamToString.java,主要作用:流轉換成的字串。代碼如下:
package com.wuyudong.mobilesafe.Utils;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;public class StreamUtil { /** * 流轉換成字串 * @param is 流對象 * @return 流轉換成的字串 返回null代表異常 */ public static String streamToString(InputStream is) { //1,在讀取的過程中,將讀取的內容儲存值緩衝中,然後一次性的轉換成字串返回 ByteArrayOutputStream bos = new ByteArrayOutputStream(); //2,讀流操作,讀到沒有為止(迴圈) byte[] buffer = new byte[1024]; //3,記錄讀取內容的臨時變數 int temp = -1; try { while((temp = is.read(buffer)) != -1) { bos.write(buffer, 0, temp); } //返回讀取資料 return bos.toString(); } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); bos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return null; }}
然後在中添加請求網路資料代碼(由於請求網路服務是耗時操作,所有新開一個線程完成):
/** * 檢測版本號碼 */ private void checkVersion() { new Thread() { public void run() { // 發送請求擷取資料,參數則為請求json的連結地址 // http://169.254.13.99:8080/update.json 測試階段不是最優 // 僅限於模擬器訪問電腦tomcat try { // 1,封裝url地址 URL url = new URL("http://10.0.2.2:8080/update.json"); // 2,開啟一個連結 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 3,設定常見請求參數(要求標頭) // 請求逾時 connection.setConnectTimeout(2000); // 讀取逾時 connection.setReadTimeout(2000); // 預設就是get請求方式 //connection.setRequestMethod("POST"); // 4,擷取請求成功響應碼 if(connection.getResponseCode() == 200) { // 5,以流的形式,將資料擷取下來 InputStream is = connection.getInputStream(); // 6,將流轉換成字串(工具類封裝) String json = StreamUtil.streamToString(is); // 記得添加許可權-->android.permission.INTERNET Log.i(tag, json); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }; }.start(); }
運行後可以在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資料成功
Android 手機衛士--構建服務端json、請求網路資料