数据的传递

  客户端:发送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,文件内容如下:

JavaScript代码
  1. {  
  2.     "downloadUrl":"http://www.wuyudong.com/XXX.apk",  
  3.     "versionCode":"2";  
  4.     "versionDes":"2.0版本发布了,赶紧来下载啊"  
  5.     "versionName":"2.0"  
  6. }  

  注意: 保存文本为 "UTF-8 无BOM" 格式

  开启Tomcat,将上面的update.json文件放进ROOT文件夹

  新建工具类streamToString.java,主要作用:流转换成的字符串。代码如下:

Java代码
  1. package com.wuyudong.mobilesafe.Utils;  
  2.   
  3. import java.io.ByteArrayOutputStream;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6.   
  7. public class StreamUtil {  
  8.   
  9.   
  10.     /** 
  11.      * 流转换成字符串 
  12.      * @param is    流对象 
  13.      * @return    流转换成的字符串        返回null代表异常 
  14.      */  
  15.     public static String streamToString(InputStream is) {  
  16.           
  17.         //1,在读取的过程中,将读取的内容存储值缓存中,然后一次性的转换成字符串返回  
  18.         ByteArrayOutputStream bos = new ByteArrayOutputStream();  
  19.         //2,读流操作,读到没有为止(循环)  
  20.         byte[] buffer = new byte[1024];  
  21.         //3,记录读取内容的临时变量  
  22.         int temp = -1;  
  23.         try {  
  24.             while((temp = is.read(buffer)) != -1) {  
  25.                 bos.write(buffer, 0, temp);  
  26.             }  
  27.             //返回读取数据  
  28.             return bos.toString();  
  29.         } catch (IOException e) {  
  30.             e.printStackTrace();  
  31.         } finally {  
  32.             try {  
  33.                 is.close();  
  34.                 bos.close();  
  35.             } catch (IOException e) {  
  36.                 // TODO Auto-generated catch block  
  37.                 e.printStackTrace();  
  38.             }  
  39.         }  
  40.           
  41.         return null;  
  42.     }  
  43. }  

  然后在中添加请求网络数据代码(由于请求网络服务是耗时操作,所有新开一个线程完成):

Java代码
  1. /** 
  2.  * 检测版本号 
  3.  */  
  4. private void checkVersion() {  
  5.     new Thread() {  
  6.         public void run() {  
  7.             // 发送请求获取数据,参数则为请求json的链接地址  
  8.             // http://169.254.13.99:8080/update.json 测试阶段不是最优  
  9.             // 仅限于模拟器访问电脑tomcat  
  10.   
  11.             try {  
  12.                 // 1,封装url地址  
  13.                 URL url = new URL("http://10.0.2.2:8080/update.json");  
  14.                 // 2,开启一个链接  
  15.                 HttpURLConnection connection = (HttpURLConnection) url.openConnection();  
  16.                 // 3,设置常见请求参数(请求头)  
  17.                 // 请求超时  
  18.                 connection.setConnectTimeout(2000);  
  19.                 // 读取超时  
  20.                 connection.setReadTimeout(2000);  
  21.                   
  22.                 // 默认就是get请求方式  
  23.                 //connection.setRequestMethod("POST");  
  24.                   
  25.                 // 4,获取请求成功响应码  
  26.                 if(connection.getResponseCode() == 200) {  
  27.                     // 5,以流的形式,将数据获取下来  
  28.                     InputStream is = connection.getInputStream();  
  29.                     // 6,将流转换成字符串(工具类封装)  
  30.                     String json = StreamUtil.streamToString(is);  
  31.                     // 记得添加权限-->android.permission.INTERNET  
  32.                     Log.i(tag, json);                          
  33.                 }  
  34.                   
  35.             } catch (MalformedURLException e) {  
  36.                 // TODO Auto-generated catch block  
  37.                 e.printStackTrace();  
  38.             } catch (IOException e) {  
  39.                 // TODO Auto-generated catch block  
  40.                 e.printStackTrace();  
  41.             }  
  42.         };  
  43.     }.start();  
  44. }  

  运行后可以在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开发网
本文地址:http://www.jizhuomi.com/android/example/620.html
2016年10月14日
发布:鸡啄米 分类:Android开发实例 浏览: 评论:0