用url请求数据并用pull解析

来源:互联网 发布:mac如何卸载java 编辑:程序博客网 时间:2024/06/04 19:21
package com.bwei.test;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.client.HttpClient;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

import com.bwei.adapter.Myadapter2;
import com.bwei.vo.Bean;
import com.lidroid.xutils.BitmapUtils;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class Second extends Activity {

    private int id;
    private ListView lv;
    private String path;
    private List<Bean> list2;
    Handler hd = new Handler() {
        public void handleMessage(android.os.Message msg) {
            // lv.setAdapter(adapter);
            msg.obj=list2;
            tv.setText(list2.get(0).body);
            BitmapUtils b=new BitmapUtils(Second.this);
            b.display(img, list2.get(0).portrait);
        };
    };
    private TextView tv;
    private ImageView img;
    private List<Bean> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);
        // lv = (ListView) findViewById(R.id.se_listview);
        // 得到传来的id的值
        img = (ImageView) findViewById(R.id.ss_img);
        tv = (TextView) findViewById(R.id.ss_tv);
        Intent intent = getIntent();
        id = intent.getIntExtra("id", 0);
        Log.d("msg", id+"id的值!!!!!");
        path = "http://www.oschina.net/action/api/tweet_detail?id=" + id;
        Log.d("msg", path);
        // 进行解析
        getData();

        // Myadapter2 adapter=new Myadapter2(list, Second.this);
        
    
        

    }

    private void getData() {

        new Thread() {

            public void run() {
                try {
                    URL url = new URL(path);
                    HttpURLConnection connection = (HttpURLConnection) url
                            .openConnection();
                    //设置请求的方式
                    connection.setRequestMethod("GET");
                    int code = connection.getResponseCode();
                    if (code == 200) {
                        // 用流读取到字符串
                        InputStream is = connection.getInputStream();
                        list2 = pullJiexi(is);
                        Message msg=new Message();
                        msg.obj=list2;
                        hd.sendMessage(msg);
                    }

                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            };
        }.start();

    }

    // 解析的方法
    protected List<Bean> pullJiexi(InputStream is) {
        try {
            Bean b = null;
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            XmlPullParser parser = factory.newPullParser();
            // 得到流
            parser.setInput(is, "utf-8");
            // 得到其类型
            int type = parser.getEventType();
            // 进行判断
            while (type != XmlPullParser.END_DOCUMENT) {

                switch (type) {
                case XmlPullParser.START_DOCUMENT:
                    list = new ArrayList<Bean>();
                    break;
                case XmlPullParser.START_TAG:
                    // 进行判断
                    if ("tweet".equals(parser.getName())) {
                        b = new Bean();
                    } else if ("id".equals(parser.getName())) {
                        b.setId(Integer.parseInt(parser.nextText()));
                    } else if ("imgBig".equals(parser.getName())) {
                        b.setImgBig(parser.nextText());
                    } else if ("portrait".equals(parser.getName())) {
                        b.setPortrait(parser.nextText());
                    } else if ("author".equals(parser.getName())) {
                        b.setAuthor(parser.nextText());
                    } else if ("body".equals(parser.getName())) {
                        b.setBody(parser.nextText());
                    }
                    break;
                case XmlPullParser.END_TAG:
                    if ("tweet".equals(parser.getName())) {
                        list.add(b);
                    }
                    break;
                case XmlPullParser.END_DOCUMENT:

                    break;

                }
                type=parser.next();

            }
            System.out.println("解析成功521" + list.toString());

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return list;
    }

}

0 0
原创粉丝点击