android端从服务器抓取的几种常见的数据的处理方式
1、图片
- public void look(View v) {
- String path = et_path.getText().toString();
- try {
- URL url = new URL(path);
- HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- conn.setRequestMethod("GET");
- conn.setConnectTimeout(5000);
- if(conn.getResponseCode() == 200){
- InputStream is = conn.getInputStream();
- Bitmap bitmap = BitmapFactory.decodeStream(is);
- if(bitmap != null){
- iv.setImageBitmap(bitmap);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
2、网页源码
- public void look(View v) {
- String path = et_path.getText().toString();
- try {
- URL url = new URL(path);
- HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- conn.setRequestMethod("GET");
- conn.setConnectTimeout(5000);
- if(conn.getResponseCode() == 200){
- InputStream is = conn.getInputStream();
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- byte[] buffer = new byte[1024];
- int len = 0;
- //把流转化成文本信息
- while((len = is.read(buffer)) != -1){
- bos.write(buffer,0,len);
- }
- String html = bos.toString();
- html_tv.setText(html);
- is.close();
- bos.close();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
3、Xml形式的数据
- public List<HeaderNew> getHeaderNews(Context context) throws Exception{
- String path = context.getResources().getString(R.string.serverurl);
- URL url = new URL(path);
- HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- conn.setRequestMethod("GET");
- conn.setConnectTimeout(5000);
- if(conn.getResponseCode() == 200){
- InputStream is = conn.getInputStream();
- return parserHeaderNews(is);
- }
- return null;
- }
- public List<HeaderNew> parserHeaderNews(InputStream is) throws Exception {
- List<HeaderNew> headerNews = null;
- HeaderNew headerNew = null;
- XmlPullParser parser = Xml.newPullParser();
- parser.setInput(is,"UTF-8");
- int eventType = parser.getEventType();
- while(eventType != XmlPullParser.END_DOCUMENT){
- switch(eventType){
- case XmlPullParser.START_TAG:
- if("HeaderNews".equals(parser.getName())){
- headerNews = new ArrayList<HeaderNew>();
- }else if("HeaderNew".equals(parser.getName())){
- headerNew = new HeaderNew();
- }else if("image".equals(parser.getName())){
- headerNew.setImage(parser.nextText());
- }else if("title".equals(parser.getName())){
- headerNew.setTitle(parser.nextText());
- }else if("content".equals(parser.getName())){
- headerNew.setContent(parser.nextText());
- }else if("count".equals(parser.getName())){
- headerNew.setCount(parser.nextText());
- }
- break;
- case XmlPullParser.END_TAG:
- if("HeaderNew".equals(parser.getName())){
- headerNews.add(headerNew);
- headerNew = null;
- }
- break;
- default:
- break;
- }
- eventType = parser.next();
- }
- return headerNews;
- }
4、抓取JSON格式的数据
抓取JSON格式的数据是以抓取网页源码为基础的。
- public List<HeaderNew> getHeaderNewsFromJSON(Context context) throws Exception{
- List<HeaderNew> headerNews = new ArrayList<HeaderNew>();
- String path = context.getResources().getString(R.string.serverurl_json);
- URL url = new URL(path);
- HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- conn.setRequestMethod("GET");
- conn.setConnectTimeout(5000);
- if(conn.getResponseCode() == 200){
- InputStream is = conn.getInputStream();
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- byte[] buffer = new byte[1024];
- int len = 0;
- while((len = is.read(buffer)) != -1){
- bos.write(buffer,0,len);
- }
- String json = bos.toString();
- JSONArray jsonArray = new JSONArray(json);
- for(int i = 0 ; i < jsonArray.length() ; ++i){
- JSONObject jsonObject = (JSONObject) jsonArray.get(i);
- HeaderNew headerNew = new HeaderNew();
- headerNew.setImage(jsonObject.getString("image"));
- headerNew.setTitle(jsonObject.getString("title"));
- headerNew.setContent(jsonObject.getString("content"));
- headerNew.setCount(jsonObject.getString("count"));
- headerNews.add(headerNew);
- }
- }
- return headerNews;
- }
5、抓取Xml形式的数据与抓取JSON形式的数据的区别
构建时的区别:
1)Xml形式的数据
服务器端直接返回数据集合,由JSP来构建XML形式的数据
代码如下:
servlet:
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- HeaderNewsService service = new HeaderNewsService();
- List<HeaderNew> headerNews = service.getHeaderNews();
- request.setAttribute("headerNews", headerNews);
- request.getRequestDispatcher("/WEB-INF/page/headernewsxml1.jsp").forward(request, response);
- }
jsp:
- <?xml version="1.0" encoding="UTF-8"?>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
- <%@ page contentType="text/html; charset=utf-8" %>
- <HeaderNews>
- <c:forEach items="${headerNews}" var="headerNew">
- <HeaderNew>
- <image>${headerNew.image }</image>
- <title>${headerNew.title }</title>
- <content>${headerNew.content}</content>
- <count>${headerNew.count}</count>
- </HeaderNew>
- </c:forEach>
- </HeaderNews>
2)JSON形式的数据
在服务器端构造好JSON格式的数据。JSP页面直接显示即可。
代码如下:
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- HeaderNewsService service = new HeaderNewsService();
- List<HeaderNew> headerNews = service.getHeaderNews();
- StringBuilder sb = new StringBuilder("[");
- for(HeaderNew headerNew : headerNews){
- sb.append("{");
- sb.append("image:").append("\"").append(headerNew.getImage()).append("\"").append(",");
- sb.append("title:").append("\"").append(headerNew.getTitle()).append("\"").append(",");
- sb.append("content:").append("\"").append(headerNew.getContent()).append("\"").append(",");
- sb.append("count:").append("\"").append(headerNew.getCount()).append("\"");
- sb.append("}");
- sb.append(",");
- }
- sb.deleteCharAt(sb.length() - 1);
- sb.append("]");
- String json = sb.toString();
- request.setAttribute("json",json);
- request.getRequestDispatcher("/WEB-INF/page/headernewsjson.jsp").forward(request,response);
- }
JSP:
- <%@ page contentType="text/html; charset=UTF-8" %>
- ${json}
附上JSON数据的格式:
- [{ a : b , c : d } , {.....}]
android端从服务器抓取的几种常见的数据的处理方式的更多相关文章
- android端向服务器提交请求的几种方式
1.GET方式 其实GET方式说白了,就是拼接字符串..最后拼成的字符串的格式是: path ? username= ....& password= ...... public boolea ...
- [python]初试页面抓取——抓取沪深股市交易龙虎榜数据
[python]抓取沪深股市交易龙虎榜数据 python 3.5.0下运行 没做自动建立files文件夹,需要手动在py文件目录下建立files文件夹后运行 #coding=utf-8 import ...
- 抓取“矢量”的实时交通流量数据
1. 引言 最近老师有一个需求,就是想要抓取实时的矢量交通流量数据来做分析,类似于百度地图,高德地图的"实时路况"那种.平时的网络抓取工作一般是抓取网页上现成的数据,但是交通流量数 ...
- Java服务器对外提供接口以及Android端向服务器请求数据
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5056780.html 讲解下java服务器是如何对移动终端提供接口的,以什么数据格式提供出去,移动端又是怎么 ...
- Android 7.0解决抓取不到https请求的问题
问题:Android7.0系统,使用fiddler不能抓取https请求 解决方法: 1.在源码res目录下新建xml目录,增加network_security_config.xml文件 (工程名/ ...
- Android移动网络如何抓取数据包
1)下载tcpdump工具 tcpdump(dump the traffic on a network)是Linux中强大的网络数据采集分析工具之一,可以将网络中传送的数据包头完全截获下来提供分析.它 ...
- Android MaoZhuaWeiBo开发Service抓取个人信息-2
前面把基本的东西讲完了,之后就是数据的获取和解析显示出来了,那接下来我们就负责抓取数据的这块吧,首先我们须要 在清单文件中载入服务和活动 加入:. <activity android:name= ...
- Charles安装破解、抓取https请求及常见问题解决方法
现在基本大部分网站都使用了https,所以要想抓到https的请求,首要任务是先有工具:charles.fiddler,先介绍下charles针对https请求的抓取方法,此方法兼容windows和m ...
- 如何抓取基于https协议的webservice数据包
方法一:基于Fiddler2等第三方工具(需要在Java端禁用SSL安全检查) 原文拷贝自http://blog.csdn.net/zmxj/article/details/6327775,向原作者表 ...
随机推荐
- Rsync、Unison及DRBD的比较
一.Rsync Rsync(remote synchronize),顾名思义,可以知道这是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的 “Rsync算法”来 ...
- 转:Bootstrap研究 精巧的网格布局系统
本网格布局系统属于Scaffolding(框架,布局)部分.在Scaffolding里面有(固定)网格布局(Grid System)和流式网格布局(Fluid Grid System).本文讨论第一种 ...
- 测试DOM0级事件和DOM2级事件的堆叠
1. 问题 如果大家看过北风网CJ讲师的Javascript视频教程,就可以看到其封装了一个很强的事件添加和删除函数,如下所示 function addEvent(obj, evtype, fn) { ...
- Use Node.js DDP Client on Arduino Yun to Access Meteor Server
Use Node.js DDP Client on Arduino Yun to Access Meteor Server 概述 在Arduino Yun上安装 Node.js, 并測试与 Meteo ...
- 关于php判断中文字符的问题
在网上找了好多例子,还是这个靠谱点: UTF-8匹配: 在javascript中,要判断字符串是中文是很简单的.比如: var str = "php编程"; if (/^[\u4e ...
- iOS图片拉伸技巧-李明杰分享
http://bbs.itcast.cn/thread-21436-1-1.html 本文目录 "一.iOS5.0之前------------------------------------ ...
- Matlab中.*和./详解
1.概念 .*和./用于矩阵相乘或者矩阵相除,分别表示矩阵中对应元素相乘和对应元素相除. 2.实例:
- 枚举+搜索 hdu-4431-Mahjong
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4431 题目大意: 给一副牌,求出所有能糊的牌. 解题思路: 枚举每一张牌,看能不能糊. 因为一共只有 ...
- Android自己定义控件(状态提示图表)
[工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重分享成果] 1 背景 前面分析那么多系统源代码了.也该暂停下来歇息一下,趁昨晚闲着看见一个有意思的需求就操 ...
- Eclipse 优化方法(经典收藏)
第一步: 取消自动validationvalidation有一堆,什么xml.jsp.jsf.js等等,我们没有必要全部都去自动校验一下,只是需要的时候才会手工校验一下! 取消方法:windows–& ...