<pre name="code" class="java">//HttpURLconection获得数据源
public void readContentFromGet() throws IOException {
String path = "http://www.sciencenet.cn/xml/iphoneInterface.aspx?type=news&nums=20&pass=功能";
// 拼凑get请求的URL字串,使用URLEncoder.encode对特殊和不可见字符进行编码
String getURL = path;
URL getUrl = new URL(path);
// 根据拼凑的URL,打开连接,URL.openConnection函数会根据 URL的类型,
// 返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnection
HttpURLConnection connection = (HttpURLConnection) getUrl
.openConnection();
// 进行连接,但是实际上get request要在下一句的 connection.getInputStream()函数中才会真正发到
// 服务器
connection.connect();
// 获取包含数据的输入流
InputStream inputStream = connection.getInputStream();
List<News> xmlParse = xmlParse(inputStream);
Message msg = Message.obtain();
msg.obj = xmlParse;
mHandler.sendMessage(msg);
// 断开连接
connection.disconnect();
}
<pre name="code" class="java">private List<News> xmlParse(InputStream is) {
List<News> newslist = null;
News news = null;
XmlPullParser parser = Xml.newPullParser();
try {
parser.setInput(is, "UTF-8");
int eventType = parser.getEventType();// 产生第一个事件
while (eventType != XmlPullParser.END_DOCUMENT) {// 只要不是文档结束事件
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
newslist = new ArrayList<News>();
break;
case XmlPullParser.START_TAG:
String name = parser.getName();// 获取解析器当前指向的元素的名称
if ("news".equals(name)) {
news = new News();
}
if (news != null) {
if ("title".equals(name)) {
news.setTitle(parser.nextText());// 获取解析器当前指向元素的下一个文本节点的值
}
if ("body".equals(name)) {
news.setBody(parser.nextText());
}
}
break;
case XmlPullParser.END_TAG:
if ("news".equals(parser.getName())) {
newslist.add(news);
news = null;
}
break;
}
eventType = parser.next();
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return newslist;
}