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数据成功

时间: 2024-08-05 16:51:32

Android 手机卫士--构建服务端json、请求网络数据的相关文章

Android客户端与PHP服务端通信(二)

概述 本节通过一个简单的demo程序简单的介绍Android客户端通过JSON向PHP服务端提交订单,PHP服务端处理订单后,通过JSON返回结果给Android客户端.正常来讲,PHP服务端在处理订单过程中,需要与MySQL数据库交互,这里为了简单起见,暂时省掉MySQL. 通信格式 首先,需要定下客户端与服务端之间通信格式,如下表 Android客户端 客户端与服务端采用JSON数据格式通信,同时采用HTTP通信协议交互,采用POST方式提交结果.同时还要注意一点,与WEB服务器通信的过程需

HTTP服务端JSON服务端

HTTP服务端JSON服务端 最后更新日期:  2014-5-18 Author: Kagula 阅读前提: CMake工具的基本使用 内容简介: CPPCMS是个开源Web开发框架,通过它可以很容易实现HTTP服务和JSON服务,这里介绍CPPCMS开发环境的搭建.写一个CPPCMS测试程序,它建立HTTP服务,向浏览器返回Hello,World页面.CPPCMS依赖的一些第三方库,其它地方已经介绍怎么Build,所以这里不重复了. 环境:Windows8.1 64bit.Visual Stu

Android 手机卫士--弹出对话框

在<Android 手机卫士--解析json与消息机制发送不同类型消息>一文中,消息机制发送不同类型的信息还没有完全实现,在出现异常的时候,应该弹出吐司提示异常,代码如下: private Handler mHandler = new Handler() { // public void handleMessage(android.os.Message msg) { switch (msg.what) { case UPDATE_VERSION: //弹出对话框,提示用户更新 //showUp

PHP json_encode 处理汉字为空 服务端JSON汉字编码

PHP   json_encode 处理汉字为空  服务端JSON汉字编码 原因是这个汉字是gbk编码 , json只能处理utf-8的编码 ,所以要先将数据转码 用Extjs接收PHP服务端返回的Json结果时,发现只要是汉字(从SQLServer取得)都是空字符,很是纳闷.后来看 json_encode的文档才知道,它只能编码UTF-8的字符.这个问题就是返回的字符是GB2312,怎么变为UTF-8,并且最好是将整个数组进 行UTF-8的转换.经过搜索有以下代码完成: //处理数组编码格式

专业移动APP 手机APP后台服务端开发

专业移动APP 手机APP后台服务端开发优势:8年PHP 9年JAVA开发经验采用THINKPHP 和JFINAL ,SBadmin 2框架进行开发完善的开发文档免费一年BUG维护 可签协议,可先预付20%,也可分段付款, 亲 请带好需求文档! QQ 184377367 报价原则1:功能列表2:兼容性3:安全要求等级4:是否需要完善的开发文档5:后台UI是否有要求

Android 手机卫士--确认密码对话框编写

本文接着实现“确认密码”功能,也即是用户以前设置过密码,现在只需要输入确认密码 本文地址:http://www.cnblogs.com/wuyudong/p/5940718.html,转载请注明出处. 布局文件和<Android 手机卫士--设置密码对话框>中的布局基本类似,所有copy一下,修改一点细节就搞定: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and

Android 手机卫士--签名文件说明&amp;包名说明

在<Android 手机卫士--打包生成apk维护到服务器>一文中,实现了新版本的apk到服务器,当打开客户端apk的时候,发现有新版本,提示更新.还实现了利用xutils工具实现了从服务器端下载apk 本文地址:http://www.cnblogs.com/wuyudong/p/5903484.html,转载请注明源地址. 本文实现下载本机apk的安装,过程很简单,参考<Android APK的安装> 代码如下: /** * 安装对应的apk * @param file 安装文件

C#服务端Http请求之HttpRequest

与客户端Http请求类HttpWebRequest相对的服务端Http请求类是HttpRequest.HttpApplication.HttpContext.Page.UserControl类的Request属性都是HttpRequest类的实例.HttpRequest类使得Asp.Net能够读取客户端(如浏览器或使用了HttpWebRequest类的客户端程序)在Web请求期间发送的Http值.常见的Http值是客户端以Get方式传来的Url参数.Post方式提交过来的表单项和文件:不常见的H

XFire构建服务端Service的两种方式

1.原声构建:2.集成spring构建 http://blog.csdn.net/carefree31441/article/details/4000436XFire构建服务端Service的两种方式