【Android开发】JSON格式传送网络信息
来源:互联网 发布:win32系统编程 pdf 编辑:程序博客网 时间:2024/06/06 03:56
根据上一个案例:http://blog.csdn.net/acmman/article/details/38755237
下午又写了关于安卓网络传输的另外一种方法,采用JSON格式进行网络信息传递并解析。
用的WEB应用与Android客户端都是在上一个样例的基础上改写的。
WEB应用端
Servlet有所变化
package deu.hpu.servlet; import java.io.IOException;import java.io.PrintWriter;import java.util.List; import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; import deu.hpu.servise.dima.News;import deu.hpu.servise.impl.VideoNewsService;import deu.hpu.servise.impl.VideoNewsServiceImpl; public class ListServlet extends HttpServlet { private VideoNewsService service=new VideoNewsServiceImpl();public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { doPost(request,response);} public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { List<News> videos=service.getLastNews(); //得到请求参数 String format=request.getParameter("format"); //如果是以json的请求参数,就以就向客户端返回json格式的数据,否则就返回XML格式的数据 if("json".equals(format)){ StringBuilder builder=new StringBuilder(); builder.append('['); for(News news:videos){ builder.append('{'); builder.append("id:").append(news.getid()).append(','); builder.append("title:\"").append(news.getTitle()).append("\","); builder.append("timelength:").append(news.getTimelength()); builder.append("},"); } builder.deleteCharAt(builder.length()-1); builder.append(']'); request.setAttribute("json", builder.toString()); request.getRequestDispatcher("/WEB-INF/Page/jsonvideonews.jsp").forward(request, response); } else{ request.setAttribute("videos", videos); request.getRequestDispatcher("/WEB-INF/Page/videonews.jsp").forward(request, response); } } }
相应的,在WEB-INF/Page下创建了新的JSP文件,用来接受request带过来的json数据,并描述成json数据的格式
相比XML格式的,json属于普通文本格式。代码很简单:
<%@ page language="java" import="java.util.*" contentType="text/plain; charset=UTF-8" pageEncoding="UTF-8"%>${json}
完成,之后在地址栏输入
http://10.20.124.72:8080/videonews/ListServlet?format=json
注意:后面必须加?format=json,不然无法以json格式输出数据!!
效果:
Android客户端:
我们在VedioService业务类中新增getJSONLastNews() 与parseJSON()两个方法,用来得到json数据和解析json数据以 List形式返回
/* * 获取最新的视频资讯 * */ public static List<News> getJSONLastNews() throws Exception{ String path="http://10.20.124.72:8080/videonews/ListServlet?format=json"; URL url=new URL(path); HttpURLConnection conn=(HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); conn.setRequestMethod("GET"); if(conn.getResponseCode()==200){ InputStream instream=conn.getInputStream(); return parseJSON(instream); } return null; }/* * 解析JSON数据 * */private static List<News> parseJSON(InputStream instream) throws Exception{List<News> newses=new ArrayList<News>();byte [] data=streamTool.read(instream);String json=new String(data);//将String格式的json文本转换为数组格式JSONArray array=new JSONArray(json);for (int i = 0; i < array.length(); i++) {JSONObject jsonObject=array.getJSONObject(i);News news=new News(jsonObject.getInt("id"),jsonObject.getString("title"),jsonObject.getInt("timelength"));newses.add(news);}return newses;}
运行之后,安卓客户端以json形式接受数据,运行效果:
0 0
- 【Android开发】JSON格式传送网络信息
- 【Android开发】XML传送网络信息
- Android - 网络编程 - JSON - 格式
- [android开发] json格式 与javaBean, HashMap格式之间的转换, 网络请求时常用.
- JSON和XML:两种常见的web信息传送格式,数据交换语言
- Android:网络:获取JSON格式数据
- Android网络数据Json格式解析
- Android网络数据Json格式解析
- 数据传送格式之xml和json
- 传送json的response.setContentType()格式
- 后台传送时间格式数据json转换
- Android初级开发(九)——网络交互—解析JSON格式数据
- Android中Listview显示服务器端传送JSON格式的流程(一)
- Android的与服务器端传送信息使用JSON类-JSONObject与JSONArray的使用
- JSON实现Android 网络数据交换(包括复杂对象的传送)
- Android 从网络获取json格式的视频资讯
- android端获取网络json格式动态生成二维数组
- Android网络通信中数据传输的JSON格式使用
- cocos2d-x v2.2 移植WP8详解
- C#实现一个最简单的HTTP服务器
- C#基础 之 Hashtable
- hdoj 1010 Tempter of the Bone 【DFS】+【奇偶剪枝】
- android如何让service不被杀死
- 【Android开发】JSON格式传送网络信息
- 转 ofbiz的webservice接口提供(1)-WSDL的生成
- C#中的委托与事件
- 在VS中计算代码度量值
- 创业者的心声:小城市互联网创业的困局
- 如何将应用安装到/system/app下
- GoodZhang在学Python(十)--类和对象
- POJ1844 Sum
- 新装Oracle 11g忘记密码