采用json格式返回数据给Android客服端
来源:互联网 发布:北京环鼎铭阳网络 编辑:程序博客网 时间:2024/06/05 15:25
一.web开发相
1.实体Bean
package ygc.yxb.domain;public class News { private Integer id; //id private String title; //电影名称 private Integer timelenght; //时长 public News() { } public News(Integer id, String title, Integer timelenght) { this.id = id; this.title = title; this.timelenght = timelenght; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Integer getTimelenght() { return timelenght; } public void setTimelenght(Integer timelenght) { this.timelenght = timelenght; }}
2.业务逻辑
package ygc.yxb.service.impl;public class VideoNewsServiceImpl implements VideoNewsService { public List<News> getLastNews(){ List<News> newses = new ArrayList<News>(); newses.add(new News(32, "大话西游", 90)); newses.add(new News(12, "轩辕剑", 40)); newses.add(new News(56, "爱情公寓", 30)); return newses; }}
3.Servlet
package ygc.yxb.servlet;
public class ListServlet extends HttpServlet { private static final long serialVersionUID = 1L; private VideoNewsService service = new VideoNewsServiceImpl(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<News> videos = service.getLastNews(); String format=request.getParameter("format"); //如果用户请求的是这个路径,则返回JSON格式的数据.http://192.168.1.113:8080/videonews/ListServlet?format=json if("json".equals(format)){ //[{id:56,title:"xxxx",timelength:90}] //组拼一个JSON格式的对象 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.getTimelenght()); builder.append("},"); } builder.deleteCharAt(builder.length()-1); builder.append(']'); request.setAttribute("json", builder.toString()); request.getRequestDispatcher("/WEB-INF/page/jsonvideonews.jsp").forward(request, response); //如果用户请求的是这个路径,则返回XML格式的数据.http://192.168.1.113:8080/videonews/ListServlet }else{ request.setAttribute("videos", videos); request.getRequestDispatcher("/WEB-INF/page/videonews.jsp").forward(request, response); } }}
4.jsp页面
4.1.jsonvideonews.jsp
<%@ page language="java" contentType="text/plain; charset=UTF-8" pageEncoding="UTF-8"%>${json}
4.2.videonews.jsp XML数据
<%@ page language="java" contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><?xml version="1.0" encoding="UTF-8"?><videonews> <c:forEach items="${videos}" var="video"> <news id ="${video.id }"> <title>${video.title }</title> <timelength>${video.timelenght}</timelength> </news> </c:forEach></videonews>
现在Android开发相关代码
1.实体Bean
package ygc.yxb.domain;
public class News { private Integer id; private String title; private Integer timelenght; public News() { } public News(Integer id, String title, Integer timelenght) { this.id = id; this.title = title; this.timelenght = timelenght; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Integer getTimelenght() { return timelenght; } public void setTimelenght(Integer timelenght) { this.timelenght = timelenght; }}
2.业务逻辑
package ygc.yxb.service;public class VideoNewsService { public static List<News> getLastNews() throws Exception{ String path="http://192.168.1.113:8080/videonews/ListServlet"; 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 parseXML(inStream); } return null; } public static List<News> getJSONLastNews() throws Exception{ String path="http://192.168.1.113: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; } 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); //将json对象转换成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; } private static List<News> parseXML(InputStream inStream) throws Exception{ List<News> newses = new ArrayList<News>(); News news = null; //用Pull解析器解析XML文件 XmlPullParser parser= Xml.newPullParser(); parser.setInput(inStream, "UTF-8"); //得到开始文档XML事件 int event = parser.getEventType(); //不等于结束事件,循环读取XML文件并封装成对象 while(event !=XmlPullParser.END_DOCUMENT){ switch (event) { case XmlPullParser.START_TAG: if("news".equals(parser.getName())){ int id = new Integer(parser.getAttributeValue(0)); news = new News(); news.setId(id); }else if("title".equals(parser.getName())){ news.setTitle(parser.nextText()); }else if("timelength".equals(parser.getName())){ news.setTimelenght(new Integer(parser.nextText())); } break; case XmlPullParser.END_TAG: if("news".equals(parser.getName())){ newses.add(news); news = null; } break; } event = parser.next(); } return newses; }}
3.Activity
package ygc.yxb.news;public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ListView listView=(ListView)this.findViewById(R.id.listView); try { List<News> videos=VideoNewsService.getJSONLastNews(); List<HashMap<String,Object>> data = new ArrayList<HashMap<String,Object>>(); for (News news : videos) { HashMap<String, Object> item = new HashMap<String, Object>(); item.put("id", news.getId()); item.put("title", news.getTitle()); item.put("timelength", getResources().getString(R.string.timelength)+ news.getTimelenght()+getResources().getString(R.string.min)); data.add(item); } //用SimpleAdapter 绑定ListView控件 SimpleAdapter adapter = new SimpleAdapter(this,data, R.layout.item,new String[]{"title","timelength"}, new int[]{R.id.title,R.id.timelength}); listView.setAdapter(adapter); } catch (Exception e) { e.printStackTrace(); } }}
4读取数据流工具类:
package ygc.yxb.utils;public class StreamTool { public static byte[] read(InputStream inStream) throws Exception { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; //如果字节流中的数据不等于-1,就说明一直有,然后循环读出 while( (len=inStream.read(buffer)) !=-1){ //将读出的数据放入内存中 outputStream.write(buffer); } inStream.close(); return outputStream.toByteArray(); }}
0 0
- 采用json格式返回数据给Android客服端
- 服务器采用JSON格式返回数据给安卓客户端
- Android开发入门之采用JSON格式返回数据给资讯客户端
- 采用Json格式返回数据
- Android学习笔记---26_采用JSON格式返回数据给资讯客户端,效率上要高于xml文件解析和传输
- 返回json格式数据
- 采用JSON数据交换格式实现框架
- php返回json格式数据
- Servlet返回JSON格式数据
- Struts返回Json格式数据
- Servlet返回JSON格式数据
- django 返回json格式数据
- struts2 json格式返回数据
- C#返回Json格式数据
- struts2返回json格式数据
- Android客户端处理服务器端返回的Json格式数据
- .net mvc controller查询数据返回给前端json格式数据
- WebService 返回json格式和返回xml格式的数据
- uc/os学习之路(一) —— 初识uc/os
- 第6题
- 《炉石传说》架构设计赏析(5):卡牌&技能的静态数据组织
- 机器人demo
- mysql dump备份脚本
- 采用json格式返回数据给Android客服端
- 缓存cell高度开源代码阅读:UITableView-FDTemplateLayoutCell
- 突破固定思维4——日常生活
- 《剑指Offer》学习笔记--面试题25:二叉树中和为某一直的路径
- ArrayList,Vector, LinkedList的存储性能和特性
- 《炉石传说》架构设计赏析(6):卡牌&技能数据的运行时组织
- ch10_2_4.m
- FF中jquery获取window高度的问题
- HashTable实现购物车