网络请求数据Pull解析
2016-06-29 12:08
453 查看
package com.bwie.test;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import com.bwie.bean.User;
import android.os.Bundle;
import android.os.Handler;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ListView;
public class MainActivity extends Activity {
private ListView listView;
private ArrayList<User> list;
private User user;
private int eventType;
//创建dandler方法
@SuppressLint("HandlerLeak")
Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
if(msg.what==0){
listView.setAdapter(new MyBaseAdapter(MainActivity.this,list));
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
listView = (ListView) findViewById(R.id.listView);
//调用get方法
Get("http://www.sciencenet.cn/xml/iphoneInterface.aspx?type=news&nums=20&pass=");
}
//get方法解析数据
private void Get(final String path) {
//创建线程
new Thread(){
public void run() {
try {
URL url=new URL(path);
HttpURLConnection openConnection = (HttpURLConnection) url.openConnection();
int responseCode = openConnection.getResponseCode();
if(responseCode==200){
InputStream inputStream = openConnection.getInputStream();
getPull(inputStream);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
//pull解析
protected void getPull(InputStream inputStream) {
// 获取工厂
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser newPullParser = factory.newPullParser();
newPullParser.setInput(inputStream, "utf-8");
int type = newPullParser.getEventType();
while (type != XmlPullParser.END_DOCUMENT) {
String name = newPullParser.getName();
switch (type) {
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<User>();
break;
case XmlPullParser.START_TAG:
if(name.equals("item")){
user = new User();
}else if(name.equals("title")){
user.setTitle(newPullParser.nextText());
}else if(name.equals("link")){
user.setLink(newPullParser.nextText());
}else if(name.equals("imgs")){
user.setImgs(newPullParser.nextText());
}else if(name.equals("description")){
user.setDescription(newPullParser.nextText());
}else if(name.equals("copyright")){
user.setCopyright(newPullParser.nextText());
}else if(name.equals("pubDate")){
user.setPubDate(newPullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if(name.equals("item")){
list.add(user);
}
break;
default:
break;
}
type = newPullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
for (User m:list ) {
System.out.println(m.toString());
}
//将数据发送给主线程
handler.sendEmptyMessage(0);
}
}
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import com.bwie.bean.User;
import android.os.Bundle;
import android.os.Handler;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ListView;
public class MainActivity extends Activity {
private ListView listView;
private ArrayList<User> list;
private User user;
private int eventType;
//创建dandler方法
@SuppressLint("HandlerLeak")
Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
if(msg.what==0){
listView.setAdapter(new MyBaseAdapter(MainActivity.this,list));
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
listView = (ListView) findViewById(R.id.listView);
//调用get方法
Get("http://www.sciencenet.cn/xml/iphoneInterface.aspx?type=news&nums=20&pass=");
}
//get方法解析数据
private void Get(final String path) {
//创建线程
new Thread(){
public void run() {
try {
URL url=new URL(path);
HttpURLConnection openConnection = (HttpURLConnection) url.openConnection();
int responseCode = openConnection.getResponseCode();
if(responseCode==200){
InputStream inputStream = openConnection.getInputStream();
getPull(inputStream);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
//pull解析
protected void getPull(InputStream inputStream) {
// 获取工厂
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser newPullParser = factory.newPullParser();
newPullParser.setInput(inputStream, "utf-8");
int type = newPullParser.getEventType();
while (type != XmlPullParser.END_DOCUMENT) {
String name = newPullParser.getName();
switch (type) {
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<User>();
break;
case XmlPullParser.START_TAG:
if(name.equals("item")){
user = new User();
}else if(name.equals("title")){
user.setTitle(newPullParser.nextText());
}else if(name.equals("link")){
user.setLink(newPullParser.nextText());
}else if(name.equals("imgs")){
user.setImgs(newPullParser.nextText());
}else if(name.equals("description")){
user.setDescription(newPullParser.nextText());
}else if(name.equals("copyright")){
user.setCopyright(newPullParser.nextText());
}else if(name.equals("pubDate")){
user.setPubDate(newPullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if(name.equals("item")){
list.add(user);
}
break;
default:
break;
}
type = newPullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
for (User m:list ) {
System.out.println(m.toString());
}
//将数据发送给主线程
handler.sendEmptyMessage(0);
}
}
相关文章推荐
- HTTP协议中常见的术语
- java网络编程:URLDecoder和URLEncoder
- java socket网络编程
- xUtils之HttpUtils的用法
- 【bzoj3931】【CQOI2015】【网络吞吐量】【spfa+最大流】
- java网络编程:URLConnection发送HTTP请求的方法
- React-Native中网络请求
- ./configure: error: the HTTP rewrite module requires the PCRE library
- 神经网络训练中的Tricks之高效BP(反向传播算法)
- java网络编程:URLConnection 和HttpURLConnection
- linux:网络yum源和制作本地光盘yum源
- 日常小结-http协议
- 网络请求一个蛮好的库
- java网络编程: URL 和 RULConnection
- android界面空数据,没网络的背景交互
- PHP浮点数的一个常见问题的解答 (转载 http://www.laruence.com/2013/03/26/2884.html)
- java网络编程: InetAddress类之创建新的InetAddress对象
- java网络编程:InteAddress类API
- ios 网络请求问题
- 图像搜索引擎 - 特征篇