现在的位置: 首页 > 综合 > 正文

android利用http请求xml

2018年04月19日 ⁄ 综合 ⁄ 共 2034字 ⁄ 字号 评论关闭

一、权限

<uses-permission android:name="android.permission.INTERNET"/>

二、实体domain

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

三、编码

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);
 }
 
 /**
  * 解析服务器返回的协议,得到视频资讯
  * @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;
 }
}

 

抱歉!评论已关闭.