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.News;
import cn.itcast.utils.StreamTool;
public class VideoNewsService {
/**
* ��ȡ���µ���Ƶ��Ѷ
* @return
* @throws Exception
*/
public static List<News> getJSONLastNews() throws Exception{
String path = "http://192.168.0.168:8080/web/ListServlet?format=json";
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if(conn.getResponseCode() == 200){
InputStream inStream = conn.getInputStream();
return parseJSON(inStream);
}
return null;
}
/**
* ����JSON����
* @param inStream
* @return
*/
private static List<News> parseJSON(InputStream inStream) throws Exception{
List<News> newses = new ArrayList<News>();
byte[] data = StreamTool.read(inStream);
//��Byte[]ת����String
String json = new String(data);
JSONArray array = new JSONArray(json);
for(int i = 0 ; i < array.length() ; i++){
JSONObject jsonObject = array.getJSONObject(i);
News news = new News(jsonObject.getInt("id"), jsonObject.getString("title"), jsonObject.getInt("timelength"));
newses.add(news);
}
return newses;
}
/**
* ��ȡ���µ���Ƶ��Ѷ
* @return
* @throws Exception
*/
public static List<News> getLastNews() throws Exception{
String path = "http://192.168.0.168:8080/web/ListServlet";
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if(conn.getResponseCode() == 200){
InputStream inStream = conn.getInputStream();
return parseXML(inStream);
}
return null;
}
/**
* �������������ص�xml����
* @param inStream
* @return List<News>
*
*<?xml version="1.0" encoding="UTF-8" ?>
*<videonews>
*<news id="35">
*<title>ϲ�������̫��ȫ��</title>
*<timelength>90</timelength>
*</news>
*<news id="12">
*<title>�������̫��</title>
*<timelength>20</timelength>
*</news>
*<news id="56">
*<title>�Ϸ���LILI</title>
*<timelength>30</timelength>
*</news>
*</videonews>
*/
private static List<News> parseXML(InputStream inStream) throws Exception {
List<News> newses = new ArrayList<News>();
News news = null;
XmlPullParser parser = Xml.newPullParser();
parser.setInput(inStream, "UTF-8");
int event = parser.getEventType();
while( event != XmlPullParser.END_DOCUMENT){
switch (event) {
case XmlPullParser.START_TAG:
if("news".equals(parser.getName())){
int id = new Integer(parser.getAttributeValue(0));
news = new News();
news.setId(id);
}else if("title".equals(parser.getName())){
news.setTitle(parser.nextText());
}else if("timelength".equals(parser.getName())){
news.setTimelength(new Integer(parser.nextText()));
}
break;
case XmlPullParser.END_TAG:
if("news".equals(parser.getName())){
newses.add(news);
news = null;
}
break;
}
event = parser.next();
}
return newses;
}
}