您的位置:首页 > 理论基础 > 计算机网络

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

2016-09-23 15:57 211 查看
本文地址: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数据成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐