- 浏览: 1052539 次
- 性别:
- 来自: 郑州
文章分类
- 全部博客 (605)
- 数据挖掘 (22)
- spring (40)
- 工具使用 (39)
- java (137)
- JavaScript (40)
- webwork (12)
- web (120)
- 资源 (7)
- SSH (5)
- oracle (20)
- J2ME (1)
- 环境配置 (37)
- 项目管理 (29)
- mysql (14)
- struts (4)
- 项目总结 (27)
- ibatis学习 (33)
- 学习计划 (2)
- 缓存 (7)
- 重构 (3)
- Android (1)
- jquery (12)
- UML (3)
- 用户体验 (4)
- 习惯 (7)
- sakai (1)
- urlrewrite (4)
- rss (5)
- C plus plus (5)
- 算法 (5)
- 海量数据处理 (7)
- office(word、excel) (1)
- 面试题 (3)
- solr (8)
- 大数据 (2)
最新评论
-
hujin19861102:
截图看不见,最后一个webwrok的配置看不见
Ext+Webwork+Json 实现分页表格查询效果 -
蜗牛笔:
弱弱的问一句,要是分出来的词在词典中没有,那么两部分的pos- ...
ICTCLAS 中科院分词系统 -
weipeng1986:
授人予鱼不如授人予鱼,我想问你的是你是怎么总结的。比如第四种情 ...
JAVA中字符串连接效率的测试 -
xiaoqiang2008:
执行两次的原因是什么,好像楼主没弄清楚啊!是不是在web.xm ...
关于Spring中用quartz定时器在定时到达时同时执行两次的问题 -
Kent_Mu:
...
ibatis-dynamic的用法
httpURLConnection获取网络数据:XML格式返回与Json格式返回
- 博客分类:
- java
1.服务器端代码样例:
public class VideoListAction extends Action { private VideoService service = new VideoServiceBean(); public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //得到最新的视频资讯 List<Video> videos = service.getLastVideos(); VideoForm formbean = (VideoForm)form; if("json".equals(formbean.getFormat())) { //构建json字符串 StringBuilder json = new StringBuilder(); json.append('['); for(Video video : videos) { // 需要构造的形式是{id:76,title:"xxxx",timelength:80} json.append('{'); json.append("id:").append(video.getId()).append(','); json.append("title:\"").append(video.getTitle()).append("\","); json.append("timelength:").append(video.getTime()); json.append('}').append(','); } json.deleteCharAt(json.length()-1); json.append(']'); //把json字符串放置于request request.setAttribute("json", json.toString()); return mapping.findForward("jsonvideo"); } else { request.setAttribute("videos", videos); return mapping.findForward("video"); } } }
public class VideoServiceBean implements VideoService { public List<Video> getLastVideos() throws Exception { //理论上应该查询数据库 List<Video> videos = new ArrayList<Video>(); videos.add(new Video(78, "喜羊羊与灰太狼全集", 90)); videos.add(new Video(78, "实拍舰载直升东海救援演习", 20)); videos.add(new Video(78, "喀麦隆VS荷兰", 30)); return videos; } }
public class VideoListAction extends Action { private VideoService service = new VideoServiceBean(); public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //得到最新的视频资讯 List<Video> videos = service.getLastVideos(); VideoForm formbean = (VideoForm)form; if("json".equals(formbean.getFormat())) { //构建json字符串 StringBuilder json = new StringBuilder(); json.append('['); for(Video video : videos) { // 需要构造的形式是{id:76,title:"xxxx",timelength:80} json.append('{'); json.append("id:").append(video.getId()).append(','); json.append("title:\"").append(video.getTitle()).append("\","); json.append("timelength:").append(video.getTime()); json.append('}').append(','); } json.deleteCharAt(json.length()-1); json.append(']'); //把json字符串放置于request request.setAttribute("json", json.toString()); return mapping.findForward("jsonvideo"); } else { request.setAttribute("videos", videos); return mapping.findForward("video"); } } }
2.客户端:使用XML方式与JSON方式返回数据
public class VideoService { /** * 以XML方式返回获取最新的资讯 * @return * @throws Exception */ public static List<Video> getLastVideos() throws Exception { //确定请求服务器的地址 //注意在Android模拟器中访问本机服务器时不可以使用localhost与127字段 //因为模拟器本身是使用localhost绑定 String path = "http://192.168.1.100:8080/videoweb/video/list.do"; //建立一个URL对象 URL url = new URL(path); //得到打开的链接对象 HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //设置请求超时与请求方式 conn.setReadTimeout(5*1000); conn.setRequestMethod("GET"); //从链接中获取一个输入流对象 InputStream inStream = conn.getInputStream(); //对输入流进行解析 return parseXML(inStream); } /** * 解析服务器返回的协议,得到资讯 * @param inStream * @return * @throws Exception */ private static List<Video> parseXML(InputStream inStream) throws Exception { List<Video> videos = null; Video video = null; //使用XmlPullParser XmlPullParser parser = Xml.newPullParser(); parser.setInput(inStream, "UTF-8"); int eventType = parser.getEventType();//产生第一个事件 //只要不是文档结束事件 while(eventType!=XmlPullParser.END_DOCUMENT) { switch (eventType) { case XmlPullParser.START_DOCUMENT: videos = new ArrayList<Video>(); break; case XmlPullParser.START_TAG: //获取解析器当前指向的元素的名称 String name = parser.getName(); if("video".equals(name)) { video = new Video(); //把id属性写入 video.setId(new Integer(parser.getAttributeValue(0))); } if(video!=null) { if("title".equals(name)) { //获取解析器当前指向元素的下一个文本节点的值 video.setTitle(parser.nextText()); } if("timelength".equals(name)) { //获取解析器当前指向元素的下一个文本节点的值 video.setTime(new Integer(parser.nextText())); } } break; case XmlPullParser.END_TAG: if("video".equals(parser.getName())) { videos.add(video); video = null; } break; } eventType = parser.next(); } return videos; } /** * 以Json方式返回获取最新的资讯,不需要手动解析,JSON自己会进行解析 * @return * @throws Exception */ public static List<Video> getJSONLastVideos() throws Exception { // List<Video> videos = new ArrayList<Video>(); // String path = "http://192.168.1.100:8080/videoweb/video/list.do?format=json"; //建立一个URL对象 URL url = new URL(path); //得到打开的链接对象 HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //设置请求超时与请求方式 conn.setReadTimeout(5*1000); conn.setRequestMethod("GET"); //从链接中获取一个输入流对象 InputStream inStream = conn.getInputStream(); //调用数据流处理方法 byte[] data = StreamTool.readInputStream(inStream); String json = new String(data); //构建JSON数组对象 JSONArray array = new JSONArray(json); //从JSON数组对象读取数据 for(int i=0 ; i < array.length() ; i++) { //获取各个属性的值 JSONObject item = array.getJSONObject(i); int id = item.getInt("id"); String title = item.getString("title"); int timelength = item.getInt("timelength"); //构造的对象加入集合当中 videos.add(new Video(id, title, timelength)); } return videos; } }
public class StreamTool { /** * 从输入流中获取数据 * @param inStream 输入流 * @return * @throws Exception */ public static byte[] readInputStream(InputStream inStream) throws Exception{ ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while( (len=inStream.read(buffer)) != -1 ){ outStream.write(buffer, 0, len); } inStream.close(); return outStream.toByteArray(); } }
public class MainActivity extends Activity { private ListView listView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //获取到ListView对象 listView = (ListView)this.findViewById(R.id.listView); try { //通过 List<Video> videos = VideoService.getLastVideos(); //通过Json方式获取视频内容 //List<Video> videos2 = VideoService.getJSONLastVideos(); // List<HashMap<String, Object>> data = new ArrayList<HashMap<String,Object>>(); //迭代传入 for(Video video : videos) { //把video中的数据绑定到item中 HashMap<String, Object> item = new HashMap<String, Object>(); item.put("id", video.getId()); item.put("title", video.getTitle()); item.put("timelength", "时长:"+ video.getTime()); 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) { Toast.makeText(MainActivity.this, "获取最新视频资讯失败", 1).show(); Log.e("MainActivity", e.toString()); } } }
发表评论
-
fork/join框架
2017-03-09 11:03 501http://blog.csdn.net/ye1992/art ... -
protobuffer
2017-03-09 10:54 700http://blog.csdn.net/antgan/art ... -
整理上传代码容易忽略的注意事项
2013-08-31 11:28 1166每个公司都有自己的代码代码上传流程:如果打包发布的话,是不存 ... -
mysql版本升级引发的问题
2013-05-16 15:25 1657问题描述: 1. ibatis 中 mysql语 ... -
网站的记住密码功能设计
2013-02-27 19:09 1311http://greenyouyou.blog.163 ... -
大型网站架构演变之路
2013-02-27 19:08 1148http://www.cnblogs.com/ivanjack ... -
使用Filter统计Java(J2EE)的web程序http请求响应时间
2013-02-27 19:07 1392http://www.cnblogs.com/ivan ... -
java bean与xml相互转换
2013-02-06 10:27 2053最近在做的项目,在各个平台之间需要大量传输数据,且结构比较 ... -
java 反射
2013-01-14 18:21 833http://www.cnblogs.com/rollenh ... -
字符串替换
2012-12-17 11:17 1160高效的字符串模式替换实现效果如下 String str ... -
利用Freemarker实现表到功能界面的一键生成
2012-11-22 18:03 1021利用Freemarker实现表到功能界面的一键生成 h ... -
ibatis in ##的问题
2012-11-02 13:25 856http://www.hake.cc/a/biancheng/ ... -
ibatis缓存强制刷新与命中率
2012-10-19 19:06 1395缓存强制刷新: // spring注入 private Sq ... -
eclipse 的一些设置
2012-08-16 22:06 17621. 控制台信息太多,程序跑完后只能保留最后的一部分之前的 ... -
jdk1.5 System.arraycopy与jdk1.6 中Arrays.copyOf()&Arrays.copyOfRange()
2012-08-16 21:56 3290在JDK1.5的类System类中有方法 ... -
Eclipse报Java heap space错误的解决方案
2012-08-16 16:43 12073当运行大数量的数据时: (1) 如果是java 应用程 ... -
求两个字符串的最大公共字符串
2012-08-10 20:41 1065http://blog.csdn.net/wangcj625/ ... -
ffmpeg 截取视频 播放中的图片
2012-06-19 09:14 1317http://www.cnblogs.com/live365w ... -
memcached 项目中的使用
2012-06-13 09:29 1067http://ljh2008.iteye.com/blog/6 ... -
Memcached的CAS协议
2012-06-12 21:26 2396Memcached于1.2.4版本新增CAS(Check a ...
相关推荐
本话题主要探讨如何从网络获取XML数据并将其有效地呈现给用户,我们将会深入Android和Web应用两个方面来阐述这一过程。 首先,XML(Extensible Markup Language)是一种结构化数据格式,广泛用于数据交换,因为它...
本案例主要探讨了如何利用XML和JSON这两种数据格式进行网络通信,从而实现资讯的获取和展示。接下来,我们将深入讨论这两个数据格式以及它们在Android中的应用。 XML(eXtensible Markup Language)是一种结构化...
在Android开发中,获取服务器端的数据是常见的需求,特别是JSON格式的数据,因其轻量级、易解析的特性,被广泛应用于移动应用与后端服务之间的数据交换。本demo旨在展示如何在Android手机客户端通过WiFi连接服务器,...
在Android开发中,有时我们需要从网络获取JSON数据,并将其转换为XML格式,以便于本地存储或进一步处理。这个过程涉及到网络请求、JSON解析和XML序列化等技术。下面将详细介绍如何实现这一功能。 首先,我们需要从...
网络连接和XML、JSON解析是现代应用程序开发中的关键部分,特别是在构建网络应用...在实际项目中,根据需求选择合适的网络库和数据格式,优化网络请求,以及高效地解析和处理数据,都能显著提升应用的性能和用户体验。
在`JSONActivity`中编写代码,使用HTTP库(如HttpURLConnection或OkHttp)发起网络请求,获取服务器返回的JSON数据。同时,要在`AndroidManifest.xml`中添加Internet权限,否则无法访问网络。 7. **解析JSON数据**...
在Android开发中,获取JSON数据并将其展示在应用中是一项常见的任务,特别是在构建与服务器进行交互的移动应用时。这个实例“实例03获取JSON数据,显示计步器的个人信息.rar”显然涉及到从服务器获取JSON格式的数据...
JSON是一种数据格式,它基于JavaScript语法,但独立于语言,易于人阅读和编写,同时也易于机器解析和生成。JSON数据通常包含键值对,其中键是字符串,值可以是各种数据类型,如字符串、数字、数组、对象等。 在...
JSON是一种轻量级的文本数据格式,它基于JavaScript语法,但并不依赖JavaScript。在Android中,JSON解析主要分为两个过程:解析(将JSON字符串转化为Java对象)和序列化(将Java对象转化为JSON字符串)。 1. **解析...
在IT行业中,网络请求是应用程序与服务器交互的基础,XML和JSON则是常见的数据交换格式。本教程将通过一个名为"HTTP请求网络解析XML以及JSON的demo"的实例,深入讲解如何利用Java实现这两种请求方式,并对返回的数据...
2. **数据格式**:服务器返回的数据通常是JSON或XML格式。JSON因其简洁高效而被广泛使用。Android提供了Gson库用于JSON数据的解析,也可以使用org.json库手动解析。 3. **异步处理**:由于网络操作是耗时的,我们...
标题中的“天气预报小项目,内加获取json数据等等”表明这是一个关于开发天气预报应用的实践项目,其中涉及了从网络获取JSON数据并进行解析,最终可能将其存储到数据库中以便于后续展示和使用。JSON(JavaScript ...
在Android开发中,与Web服务器进行数据交互是一个常见的任务,其中JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛应用于Android与Web服务器之间的数据通信。本主题主要探讨如何在Android...
在Android开发中,数据交换和存储经常涉及到XML和JSON这两种数据格式。XML(Extensible Markup Language)是一种结构化的数据格式,常用于存储和传输数据,而JSON(JavaScript Object Notation)则是轻量级的、易于...
在Android应用开发中,HTTP网络请求是连接服务器并获取数据的一种常见方式,特别是在现代移动应用中,通过HTTP接口获取JSON格式的数据尤为普遍。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,...
当从网络获取JSON或XML数据时,可以使用`HttpURLConnection`、`OkHttp`或`Volley`等网络库。获取到数据后,可以使用上述方法进行解析。例如,使用Volley进行JSON解析: ```java RequestQueue queue = Volley....
通过上述步骤,我们可以从网络获取数据,将其解析并存储在本地,然后在需要时展示给用户。在实际项目中,还需要考虑到错误处理、数据缓存、性能优化等细节。这个压缩包中的源码应该包含了这些功能的实现,供开发者...
Jackson则是一个高性能的库,支持XML、JSON等多种数据格式的序列化和反序列化。 3. Android网络请求: 客户端与服务器通信通常使用HTTP或HTTPS协议。Android提供了多种方式实现网络请求,如HttpURLConnection、...
在安卓开发中,访问网络资源是一项基础且重要的任务,涵盖了从获取简单的文本数据到解析复杂的XML和JSON格式的数据。以下是对这些知识点的详细说明: 首先,让我们从访问网络图片开始。在Android中,我们可以使用...
RESTful服务基于HTTP方法(GET、POST、PUT、DELETE等),且通常返回JSON格式的数据,而不是XML。然而,对于理解XML拼接和Web Service调用的基本原理,上述SOAP的讨论仍然适用。 通过以上步骤,我们可以理解如何...