Pull解析

来源:互联网 发布:javaweb和php 编辑:程序博客网 时间:2024/05/14 23:56
package com.bwie.pull;


import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;


import org.xmlpull.v1.XmlPullParser;


import android.app.Activity;
import android.os.Bundle;
import android.util.Xml;
import android.widget.ListView;


public class MainActivity extends Activity {


private ListView lv_list;
private String urls = "http://apis.juhe.cn/goodbook/catalog?key=9d6ef8c31647a206e05fcaff70527182&dtype=xml";
private ArrayList<Bean> list;
private Bean bean;
private MyAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv_list = (ListView) findViewById(R.id.lv_list);
new Thread() {
public void run() {
getInfo();
};
}.start();
}


private void getInfo() {
try {
// 得到URL对象,设置要访问的路径
URL url = new URL(urls);
// 得到联网操作类,HttpURLConnection
HttpURLConnection openConnection = (HttpURLConnection) url
.openConnection();
// 设置连接超时,以毫秒为单位
openConnection.setConnectTimeout(5000);
// 设置请求方式,有GET和POST
openConnection.setRequestMethod("GET");
// 设置读取超时,以毫秒为单位
openConnection.setReadTimeout(5000);
// 开始连接
openConnection.connect();
// 通过响应码判断是否连接成功
if (openConnection.getResponseCode() == 200) {
// 得到服务器返回的数据,是以流的形式返回的
InputStream inputStream = openConnection.getInputStream();
// InputStreamReader builder = new InputStreamReader(inputStream);
XmlPullParser pullParser=Xml.newPullParser();
int eventType = pullParser.getEventType();
pullParser.setInput(inputStream, "utf-8");
while (eventType!=XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_TAG:
if ("root".equals(pullParser.getName())) {
list=new ArrayList<Bean>();
}else if ("item".equals(pullParser.getName())) {
bean =new Bean();
}else if ("id".equals(pullParser.getName())) {
bean.setId(pullParser.nextText());
}else if ("catalog".equals(pullParser.getName())) {
bean.setCatalog(pullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if ("item".equals(pullParser.getName())) {
list.add(bean);
bean=null;
}
break;


default:
break;
}
eventType=pullParser.next();
}
runOnUiThread(new Runnable() {


@Override
public void run() {
adapter = new MyAdapter(MainActivity.this, list);
lv_list.setAdapter(adapter);
}
});
}
} catch (Exception e) {
e.printStackTrace();
}


}
}
0 0
原创粉丝点击