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

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

  1. Query通过Ajax向PHP服务端发送请求并返回JSON数据

    Query通过Ajax向PHP服务端发送请求并返回JSON数据 服务端PHP读取MYSQL数据,并转换成JSON数据,传递给前端Javascript,并操作JSON数据.本文将通过实例演示了jQuer ...

  2. HTTP服务端JSON服务端

    HTTP服务端JSON服务端 最后更新日期:  2014-5-18 Author: Kagula 阅读前提: CMake工具的基本使用 内容简介: CPPCMS是个开源Web开发框架,通过它可以很容易 ...

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

    在<Android 手机卫士--解析json与消息机制发送不同类型消息>一文中,消息机制发送不同类型的信息还没有完全实现,在出现异常的时候,应该弹出吐司提示异常,代码如下: private ...

  4. Android 手机卫士--参照文档编写选择器

    本文来实现<Android 手机卫士--导航界面1的布局编写>中的图片选择器部分的代码. 本文地址:http://www.cnblogs.com/wuyudong/p/5944356.ht ...

  5. Android 手机卫士--设置界面&功能列表界面跳转逻辑处理

    在<Android 手机卫士--md5加密过程>中已经实现了加密类,这里接着实现手机防盗功能 本文地址:http://www.cnblogs.com/wuyudong/p/5941959. ...

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

    本文接着实现“确认密码”功能,也即是用户以前设置过密码,现在只需要输入确认密码 本文地址:http://www.cnblogs.com/wuyudong/p/5940718.html,转载请注明出处. ...

  7. Android 手机卫士--签名文件说明&包名说明

    在<Android 手机卫士--打包生成apk维护到服务器>一文中,实现了新版本的apk到服务器,当打开客户端apk的时候,发现有新版本,提示更新.还实现了利用xutils工具实现了从服务 ...

  8. XFire构建服务端Service的两种方式(转)

    XFire构建服务端service的两种方式,一是用xfire构建,二是和spring集成构建. 一,xifre构建,确保把xfire的jar包导入到工程中或classpath. 1,service的 ...

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

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

随机推荐

  1. 使用LinkedList模拟一个堆栈或者队列数据结构

    使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出  如同一个杯子. 队列:先进先出  如同一个水管. import java.util.LinkedList; public cl ...

  2. winform控件

    公共控件:1.Button: Enabled - 开始不可用 Visible -不可视(用来设置权限,取用户看不见的值)2.CheckBox .CheckListBox -复选框,复选框组 3.Com ...

  3. TreeView 自定义显示checkbox

    本项目需要对TreeView进行定制,要求比较简单,主要要求如下: Winform中TreeView控件默认只支持所有级别的CheckBox显示或者不显示,不能控制制定Level的树节点显示 效果如下 ...

  4. android布局属性详解

    RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false android:layout_centerHrizontal  水平居中 android:layout_cen ...

  5. Asp.net Session 与Cookie的应用

    写程序的很多人都知道的,Session是服务器端的东西而Cooike是客户端的东西.因为B/S模式是无状态模式,它们的应用都是要存储客户端的某些登录或是加密的信息. Session存在于服务器端,当然 ...

  6. c#重点[封装,继承,多肽]

    面向对象的语言三大特点:封装.继承.多态 Ⅰ.封装:是把类的内部隐藏起来,以防止外部世界看见的一个面向对象的概念,通过关键字去控制变量,方法的访问权限. 1).访问修饰符: Ⅱ.继承: eg:我们建一 ...

  7. 背水一战 Windows 10 (5) - UI: 标题栏

    [源码下载] 背水一战 Windows 10 (5) - UI: 标题栏 作者:webabcd 介绍背水一战 Windows 10 之 UI 标题栏 示例TitleBarDemo.xaml <P ...

  8. 修复 XE8 for Android 方向传感器 headingX,Y,Z 不会动的问题

    问题:XE8 for Android 方向传感器无法正常运作(在 XE7 是正常的) 测试:官方示例 Samples\Object Pascal\Mobile Snippets\Orientation ...

  9. Java程序,JDK的安装、环境的配置

    打开文件包,找到jdk-8u111-windows-x64  (64位)  双击打开安装界面 路径自行更改;(不可使用中文字段)新建一个文件夹放后面这个安装包 二.设置环境变量 右键我的电脑-属性-高 ...

  10. 初识windows程序需要了解的知识点

    初识一件事物我们会有陌生,我们慢慢地去了解它就会懂,让我带你们一起了解吧. 一.Form是.Net Framework 定义好的一个最基本的窗体类,具有窗体基本属性和方法 属性            ...