• Android 手机卫士--构建服务端json、请求网络数据


    本文地址: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数据成功

  • 相关阅读:
    robots.txt
    procdump和mimikatz工具配合破解windows账户口令
    通过vbs脚本控制方向盘按键
    批处理删除文件或文件夹代码
    彩色线条雨特效html代码
    secureCRT
    chrome 更新flash插件
    python命令行下安装redis客户端
    FastJson使用
    Redis 学习(二)
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5900384.html
Copyright © 2020-2023  润新知