android 查看从服务器端返回数据,android端从服务器抓取的几种常见的数据的处理方式...

本文介绍了Android应用中如何通过HttpURLConnection获取图片、网页源码、XML和JSON格式的数据。从代码示例中可以看到,XML和JSON数据的抓取与解析过程,以及服务器端构建这两种数据格式的不同方式。对于XML数据,使用了XmlPullParser进行解析;而对于JSON数据,首先将其转换为JSONArray,然后遍历解析。
摘要由CSDN通过智能技术生成

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 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 parserHeaderNews(InputStream is) throws Exception {

List 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();

}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 getHeaderNewsFromJSON(Context context) throws Exception{

List headerNews = new ArrayList();

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 headerNews = service.getHeaderNews();

request.setAttribute("headerNews", headerNews);

request.getRequestDispatcher("/WEB-INF/page/headernewsxml1.jsp").forward(request, response);

}

jsp:

${headerNew.image }

${headerNew.title }

${headerNew.content}

${headerNew.count}

2)JSON形式的数据

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

代码如下:

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

HeaderNewsService service = new HeaderNewsService();

List 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:

${json}

附上JSON数据的格式:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值