Android获取网络XML/JSON数据

来源:互联网 发布:免费人才测评软件 编辑:程序博客网 时间:2024/05/16 17:14

源码转自传智播客

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


 

原创粉丝点击