public class PersonService {
public List<Person> getXmlPersons() throws Exception {
URL url = new URL("http://192.168.1.240:8080/WebServer/persons.xml");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
int code = conn.getResponseCode();
if (code == 200) {
return parseXML(conn.getInputStream()); // 获取输入流, 解析
}
throw new NetworkErrorException("网络异常: " + code);
}
private List<Person> parseXML(InputStream in) throws Exception {
XmlPullParser parser = Xml.newPullParser();
parser.setInput(in, "UTF-8");
List<Person> persons = new ArrayList<Person>();
Person p = null;
for (int type = parser.getEventType(); type != XmlPullParser.END_DOCUMENT; type = parser.next()) {
if (type == XmlPullParser.START_TAG) { // 如果遇到开始标签
if ("person".equals(parser.getName())) { // 开始person
p = new Person(); // 创建Person
String id = parser.getAttributeValue(0); // 获取id属性
p.setId(Integer.parseInt(id)); // 设置id
persons.add(p); // 加入集合
} else if ("name".equals(parser.getName())) { // 开始name
String name = parser.nextText(); // 获取下一个文本
p.setName(name); // 设置name
} else if ("age".equals(parser.getName())) { // 开始age
String age = parser.nextText(); // 获取下一个文本
p.setAge(Integer.parseInt(age)); // 设置age
}
}
}
return persons;
}
public List<Person> getJsonPersons() throws Exception {
URL url = new URL("http://192.168.1.240:8080/WebServer/persons.js");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
int code = conn.getResponseCode();
if (code == 200) {
return parseJSON(conn.getInputStream());
}
throw new NetworkErrorException("网络异常: " + code);
}
private List<Person> parseJSON(InputStream in) throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[8192];
int length;
while ((length = in.read(buffer)) != -1)
out.write(buffer, 0, length);
in.close();
out.close();
List<Person> persons = new ArrayList<Person>();
String json = new String(out.toByteArray());
JSONArray arr = new JSONArray(json); // 把字符串封装成JSON数组
for (int i = 0; i < arr.length(); i++) { // 遍历数组
JSONObject obj = arr.getJSONObject(i); // 获取每个JSON对象
Person p = new Person();
p.setId(obj.getInt("id")); // 获取JSON对象中的属性
p.setName(obj.getString("name"));
p.setAge(obj.getInt("age"));
persons.add(p);
}
return persons;
}
}