Android 手機衛士--構建服務端json、請求網絡數據

本文地址: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數據成功

相關文章
相關標籤/搜索