1、图片

  1. public void look(View v) {
  2. String path = et_path.getText().toString();
  3.  
  4. try {
  5. URL url = new URL(path);
  6. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  7.  
  8. conn.setRequestMethod("GET");
  9. conn.setConnectTimeout(5000);
  10. if(conn.getResponseCode() == 200){
  11. InputStream is = conn.getInputStream();
  12. Bitmap bitmap = BitmapFactory.decodeStream(is);
  13. if(bitmap != null){
  14. iv.setImageBitmap(bitmap);
  15. }
  16. }
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. }
  20. }

2、网页源码

  1. public void look(View v) {
  2. String path = et_path.getText().toString();
  3.  
  4. try {
  5. URL url = new URL(path);
  6. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  7.  
  8. conn.setRequestMethod("GET");
  9. conn.setConnectTimeout(5000);
  10.  
  11. if(conn.getResponseCode() == 200){
  12. InputStream is = conn.getInputStream();
  13.  
  14. ByteArrayOutputStream bos = new ByteArrayOutputStream();
  15. byte[] buffer = new byte[1024];
  16. int len = 0;
  17.  
  18. //把流转化成文本信息
  19. while((len = is.read(buffer)) != -1){
  20. bos.write(buffer,0,len);
  21. }
  22.  
  23. String html = bos.toString();
  24. html_tv.setText(html);
  25.  
  26. is.close();
  27. bos.close();
  28. }
  29. } catch (Exception e) {
  30. e.printStackTrace();
  31. }
  32. }

3、Xml形式的数据

  1. public List<HeaderNew> getHeaderNews(Context context) throws Exception{
  2.  
  3. String path = context.getResources().getString(R.string.serverurl);
  4.  
  5. URL url = new URL(path);
  6. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  7.  
  8. conn.setRequestMethod("GET");
  9. conn.setConnectTimeout(5000);
  10.  
  11. if(conn.getResponseCode() == 200){
  12. InputStream is = conn.getInputStream();
  13. return parserHeaderNews(is);
  14. }
  15.  
  16. return null;
  17. }
  18.  
  19. public List<HeaderNew> parserHeaderNews(InputStream is) throws Exception {
  20. List<HeaderNew> headerNews = null;
  21. HeaderNew headerNew = null;
  22.  
  23. XmlPullParser parser = Xml.newPullParser();
  24.  
  25. parser.setInput(is,"UTF-8");
  26.  
  27. int eventType = parser.getEventType();
  28.  
  29. while(eventType != XmlPullParser.END_DOCUMENT){
  30. switch(eventType){
  31. case XmlPullParser.START_TAG:
  32. if("HeaderNews".equals(parser.getName())){
  33. headerNews = new ArrayList<HeaderNew>();
  34. }else if("HeaderNew".equals(parser.getName())){
  35. headerNew = new HeaderNew();
  36. }else if("image".equals(parser.getName())){
  37. headerNew.setImage(parser.nextText());
  38. }else if("title".equals(parser.getName())){
  39. headerNew.setTitle(parser.nextText());
  40. }else if("content".equals(parser.getName())){
  41. headerNew.setContent(parser.nextText());
  42. }else if("count".equals(parser.getName())){
  43. headerNew.setCount(parser.nextText());
  44. }
  45. break;
  46. case XmlPullParser.END_TAG:
  47. if("HeaderNew".equals(parser.getName())){
  48. headerNews.add(headerNew);
  49. headerNew = null;
  50. }
  51. break;
  52. default:
  53. break;
  54. }
  55.  
  56. eventType = parser.next();
  57. }
  58.  
  59. return headerNews;
  60. }

4、抓取JSON格式的数据

抓取JSON格式的数据是以抓取网页源码为基础的。

  1. public List<HeaderNew> getHeaderNewsFromJSON(Context context) throws Exception{
  2. List<HeaderNew> headerNews = new ArrayList<HeaderNew>();
  3.  
  4. String path = context.getResources().getString(R.string.serverurl_json);
  5.  
  6. URL url = new URL(path);
  7. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  8.  
  9. conn.setRequestMethod("GET");
  10. conn.setConnectTimeout(5000);
  11. if(conn.getResponseCode() == 200){
  12. InputStream is = conn.getInputStream();
  13.  
  14. ByteArrayOutputStream bos = new ByteArrayOutputStream();
  15. byte[] buffer = new byte[1024];
  16. int len = 0;
  17. while((len = is.read(buffer)) != -1){
  18. bos.write(buffer,0,len);
  19. }
  20. String json = bos.toString();
  21.  
  22. JSONArray jsonArray = new JSONArray(json);
  23.  
  24. for(int i = 0 ; i < jsonArray.length() ; ++i){
  25. JSONObject jsonObject = (JSONObject) jsonArray.get(i);
  26. HeaderNew headerNew = new HeaderNew();
  27.  
  28. headerNew.setImage(jsonObject.getString("image"));
  29. headerNew.setTitle(jsonObject.getString("title"));
  30. headerNew.setContent(jsonObject.getString("content"));
  31. headerNew.setCount(jsonObject.getString("count"));
  32.  
  33. headerNews.add(headerNew);
  34. }
  35. }
  36.  
  37. return headerNews;
  38. }

5、抓取Xml形式的数据与抓取JSON形式的数据的区别

构建时的区别:

1)Xml形式的数据

服务器端直接返回数据集合,由JSP来构建XML形式的数据

代码如下:

servlet:

  1. public void doGet(HttpServletRequest request, HttpServletResponse response)
  2. throws ServletException, IOException {
  3.  
  4. HeaderNewsService service = new HeaderNewsService();
  5. List<HeaderNew> headerNews = service.getHeaderNews();
  6.  
  7. request.setAttribute("headerNews", headerNews);
  8. request.getRequestDispatcher("/WEB-INF/page/headernewsxml1.jsp").forward(request, response);
  9. }

jsp:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  3. <%@ page contentType="text/html; charset=utf-8" %>
  4. <HeaderNews>
  5. <c:forEach items="${headerNews}" var="headerNew">
  6. <HeaderNew>
  7. <image>${headerNew.image }</image>
  8. <title>${headerNew.title }</title>
  9. <content>${headerNew.content}</content>
  10. <count>${headerNew.count}</count>
  11. </HeaderNew>
  12. </c:forEach>
  13. </HeaderNews>

2)JSON形式的数据

在服务器端构造好JSON格式的数据。JSP页面直接显示即可。

代码如下:

  1. public void doGet(HttpServletRequest request, HttpServletResponse response)
  2. throws ServletException, IOException {
  3.  
  4. HeaderNewsService service = new HeaderNewsService();
  5. List<HeaderNew> headerNews = service.getHeaderNews();
  6. StringBuilder sb = new StringBuilder("[");
  7.  
  8. for(HeaderNew headerNew : headerNews){
  9. sb.append("{");
  10. sb.append("image:").append("\"").append(headerNew.getImage()).append("\"").append(",");
  11. sb.append("title:").append("\"").append(headerNew.getTitle()).append("\"").append(",");
  12. sb.append("content:").append("\"").append(headerNew.getContent()).append("\"").append(",");
  13. sb.append("count:").append("\"").append(headerNew.getCount()).append("\"");
  14. sb.append("}");
  15. sb.append(",");
  16. }
  17. sb.deleteCharAt(sb.length() - 1);
  18. sb.append("]");
  19.  
  20. String json = sb.toString();
  21. request.setAttribute("json",json);
  22. request.getRequestDispatcher("/WEB-INF/page/headernewsjson.jsp").forward(request,response);
  23. }

JSP:

  1. <%@ page contentType="text/html; charset=UTF-8" %>
  2. ${json}

附上JSON数据的格式:

  1. [{ a : b , c : d } , {.....}]

android端从服务器抓取的几种常见的数据的处理方式的更多相关文章

  1. android端向服务器提交请求的几种方式

    1.GET方式 其实GET方式说白了,就是拼接字符串..最后拼成的字符串的格式是: path ?  username= ....& password= ...... public boolea ...

  2. [python]初试页面抓取——抓取沪深股市交易龙虎榜数据

    [python]抓取沪深股市交易龙虎榜数据 python 3.5.0下运行 没做自动建立files文件夹,需要手动在py文件目录下建立files文件夹后运行 #coding=utf-8 import ...

  3. 抓取“矢量”的实时交通流量数据

    1. 引言 最近老师有一个需求,就是想要抓取实时的矢量交通流量数据来做分析,类似于百度地图,高德地图的"实时路况"那种.平时的网络抓取工作一般是抓取网页上现成的数据,但是交通流量数 ...

  4. Java服务器对外提供接口以及Android端向服务器请求数据

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5056780.html 讲解下java服务器是如何对移动终端提供接口的,以什么数据格式提供出去,移动端又是怎么 ...

  5. Android 7.0解决抓取不到https请求的问题

    问题:Android7.0系统,使用fiddler不能抓取https请求 解决方法:  1.在源码res目录下新建xml目录,增加network_security_config.xml文件 (工程名/ ...

  6. Android移动网络如何抓取数据包

    1)下载tcpdump工具 tcpdump(dump the traffic on a network)是Linux中强大的网络数据采集分析工具之一,可以将网络中传送的数据包头完全截获下来提供分析.它 ...

  7. Android MaoZhuaWeiBo开发Service抓取个人信息-2

    前面把基本的东西讲完了,之后就是数据的获取和解析显示出来了,那接下来我们就负责抓取数据的这块吧,首先我们须要 在清单文件中载入服务和活动 加入:. <activity android:name= ...

  8. Charles安装破解、抓取https请求及常见问题解决方法

    现在基本大部分网站都使用了https,所以要想抓到https的请求,首要任务是先有工具:charles.fiddler,先介绍下charles针对https请求的抓取方法,此方法兼容windows和m ...

  9. 如何抓取基于https协议的webservice数据包

    方法一:基于Fiddler2等第三方工具(需要在Java端禁用SSL安全检查) 原文拷贝自http://blog.csdn.net/zmxj/article/details/6327775,向原作者表 ...

随机推荐

  1. Rsync、Unison及DRBD的比较

    一.Rsync Rsync(remote synchronize),顾名思义,可以知道这是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的 “Rsync算法”来 ...

  2. 转:Bootstrap研究 精巧的网格布局系统

    本网格布局系统属于Scaffolding(框架,布局)部分.在Scaffolding里面有(固定)网格布局(Grid System)和流式网格布局(Fluid Grid System).本文讨论第一种 ...

  3. 测试DOM0级事件和DOM2级事件的堆叠

    1. 问题 如果大家看过北风网CJ讲师的Javascript视频教程,就可以看到其封装了一个很强的事件添加和删除函数,如下所示 function addEvent(obj, evtype, fn) { ...

  4. 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 ...

  5. 关于php判断中文字符的问题

    在网上找了好多例子,还是这个靠谱点: UTF-8匹配: 在javascript中,要判断字符串是中文是很简单的.比如: var str = "php编程"; if (/^[\u4e ...

  6. iOS图片拉伸技巧-李明杰分享

    http://bbs.itcast.cn/thread-21436-1-1.html 本文目录 "一.iOS5.0之前------------------------------------ ...

  7. Matlab中.*和./详解

    1.概念 .*和./用于矩阵相乘或者矩阵相除,分别表示矩阵中对应元素相乘和对应元素相除. 2.实例:

  8. 枚举+搜索 hdu-4431-Mahjong

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4431 题目大意: 给一副牌,求出所有能糊的牌. 解题思路: 枚举每一张牌,看能不能糊. 因为一共只有 ...

  9. Android自己定义控件(状态提示图表)

    [工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重分享成果] 1 背景 前面分析那么多系统源代码了.也该暂停下来歇息一下,趁昨晚闲着看见一个有意思的需求就操 ...

  10. Eclipse 优化方法(经典收藏)

    第一步: 取消自动validationvalidation有一堆,什么xml.jsp.jsf.js等等,我们没有必要全部都去自动校验一下,只是需要的时候才会手工校验一下! 取消方法:windows–& ...