數據的傳遞
客戶端:發送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代碼
- {
- "downloadUrl":"http://www.wuyudong.com/XXX.apk",
- "versionCode":"2";
- "versionDes":"2.0版本發布了,趕緊來下載啊"
- "versionName":"2.0"
- }
注意: 保存文本為 "UTF-8 無BOM" 格式
開啟Tomcat,將上面的update.json文件放進ROOT文件夾
新建工具類streamToString.java,主要作用:流轉換成的字符串。代碼如下:
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;
- }
- }
然後在中添加請求網絡數據代碼(由於請求網絡服務是耗時操作,所有新開一個線程完成):
Java代碼
- /**
- * 檢測版本號
- */
- 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數據成功