易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
Android获取网络XML/JSON数据
Video.java
package
cn.itcast.domain;
public
class
Video {
private
Integer id;
private
String title;
private
Integer time;
public
Video(){}
public
Video(Integer id, String title, Integer time) {
this
.id = id;
this
.title = title;
this
.time = time;
}
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 getTime() {
return
time;
}
public
void
setTime(Integer time) {
this
.time = time;
}
}
StreamTool.java
package
cn.itcast.utils;
import
java.io.ByteArrayOutputStream;
import
java.io.InputStream;
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();
}
}
VideoService.java
package
cn.itcast.service;
import
java.io.InputStream;
import
java.net.HttpURLConnection;
import
java.net.URL;
import
java.util.ArrayList;
import
java.util.List;
import
org.json.JSONArray;
import
org.json.JSONObject;
import
org.xmlpull.v1.XmlPullParser;
import
Android.util.Xml;
import
cn.itcast.domain.Video;
import
cn.itcast.utils.StreamTool;
public
class
VideoService {
/**
* 获取最新的视频资讯
* @return
* @throws Exception
*/
public
static
List<Video> getLastVideos()
throws
Exception{
String path =
"http://192.168.1.100:8080/videoweb/video/list.do"
;
URL url =
new
URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setReadTimeout(
5
*
1000
);
conn.setRequestMethod(
"GET"
);
InputStream inStream = conn.getInputStream();
return
parseXML(inStream);
}
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 =
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);
JSONArray array =
new
JSONArray(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;
}
/**
* 解析服务器返回的协议,得到视频资讯
* @param inStream
* @return
* @throws Exception
*/
private
static
List<Video> parseXML(InputStream inStream)
throws
Exception{
List<Video> videos =
null
;
Video video =
null
;
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();
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;
}
}
MainActivity.java
package
cn.itcast.videoclient;
import
java.util.ArrayList;
import
java.util.HashMap;
import
java.util.List;
import
cn.itcast.domain.Video;
import
cn.itcast.service.VideoService;
import
android.app.Activity;
import
android.os.Bundle;
import
android.util.Log;
import
android.widget.ListView;
import
android.widget.SimpleAdapter;
import
android.widget.Toast;
public
class
MainActivity
extends
Activity {
private
ListView listView;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
listView = (ListView)
this
.findViewById(R.id.listView);
try
{
List<Video> videos = VideoService.getJSONLastVideos();
List<HashMap<String, Object>> data =
new
ArrayList<HashMap<String,Object>>();
for
(Video video : videos){
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 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());
}
}
}
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图