本文地址:http://www.cnblogs.com/wuyudong/p/5900384.html,轉載請註明源地址。html
數據的傳遞
客戶端:發送http請求 http://www.oxx.com/index.jsp?key=value
服務器:在接受到請求之後,給客戶端發送數據,(json,xml),json數據從數據庫中讀取出來,讀取數據拼接json,語法規則,結構java
獲取服務器版本號(客戶端發請求,服務端給響應,(json,xml))android
http://www.oxxx.com/update.json?key=value 返回200 請求成功,流的方式將數據讀取下來
json中內容包含:
/* 更新版本的版本名稱
* 新版本的描述信息
* 服務器版本號
* 新版本apk下載地址*/數據庫
服務器端json數據update.json,文件內容以下:json
{ "downloadUrl":"http://www.wuyudong.com/XXX.apk", "versionCode":"2"; "versionDes":"2.0版本發佈了,趕忙來下載啊" "versionName":"2.0" }
注意: 保存文本爲 "UTF-8 無BOM" 格式緩存
開啓Tomcat,將上面的update.json文件放進ROOT文件夾tomcat
新建工具類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中打印下面信息:jsp
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數據成功