关闭

HttpURLConnection请求数据及Gson解析

80人阅读 评论(0) 收藏 举报


具体实现通过MainActivity与实体类User,设置数据用到适配器,关键内容可以替换。此外还需导入gson.jar包

MainActivity


import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ListView;

import com.bw.exercise.adapter.MyListAdapter;
import com.bw.exercise.bean.User;
import com.bw.exercise.bean.User.Rows;
import com.google.gson.Gson;

public class NewActivity extends Activity {

    Handler handler=new Handler(){
        public void handleMessage(android.os.Message msg) {
            switch(msg.what){
            case 0:
                //得到子线程传过来的值
                User user=(User) msg.obj;
                List<Rows> rows=user.result.rows;
                //调用更新数据的方法
                adapter.addrest(rows);
                break;
            }
        };
    };
    
    private ListView lv;    
    private MyListAdapter adapter;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_new);
        
        //通过id找控件
        lv = (ListView) findViewById(R.id.new_lv);
        //给ListView设置适配器
        adapter = new MyListAdapter(NewActivity.this);
        lv.setAdapter(adapter);
        //调用请求数据的方法
        getData();
    }
    
    /**
     * 请求网路数据并解析的方法
     */
    private void getData() {
        //开启子线程请求数据
        new Thread(){
            public void run() {
                String path="http://api.fang.anjuke.com/m/android/1.3/shouye/recInfosV3/?city_id=14&lat=40.04652&lng=116.306033&api_key=androidkey&sig=9317e9634b5fbc16078ab07abb6661c5&macid=45cd2478331b184ff0e15f29aaa89e3e&app=a-ajk&_pid=11738&o=PE-TL10-user+4.4.2+HuaweiPE-TL10+CHNC00B260+ota-rel-keys%2Crelease-keys&from=mobile&m=Android-PE-TL10&cv=9.5.1&cid=14&i=864601026706713&v=4.4.2&qtime=20160411091603&pm=b61&uuid=1848c59c-185d-48d9-b0e9-782016041109&_chat_id=0";
                try {
                    URL url=new URL(path);
                    HttpURLConnection openConnection = (HttpURLConnection) url.openConnection();
                    openConnection.setReadTimeout(5000);
                    openConnection.setRequestMethod("GET");
                    openConnection.setReadTimeout(5000);
                    int code = openConnection.getResponseCode();
                    if(code==200){
                        InputStream inputStream = openConnection.getInputStream();
                        //调用流转串的方法
                        String streamToStr = StreamToStr(inputStream);
                        Gson gson=new Gson();
                        User user = gson.fromJson(streamToStr, User.class);
                        //把数据发送到Handler里更新UI
                        Message msg=Message.obtain();
                        msg.obj=user;
                        msg.what=0;
                        handler.sendMessage(msg);
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            };
        }.start();
    }
    
    /**
     * 流转串的方法
     * @param inputStream
     * @return
     */
    public String StreamToStr(InputStream inputStream){
        try {
            ByteArrayOutputStream arrayOutputStream=new ByteArrayOutputStream();
            int len=0;
            byte[] buffer=new byte[1024];
            while((len=inputStream.read(buffer))!=-1){
                arrayOutputStream.write(buffer, 0, len);
            }
            return  arrayOutputStream.toString();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

}


User实体类



import java.util.List;

public class User {

    public Result result;
    public String status;
    
    public class Result{
        public List<Rows> rows;
        public String title;
        public String total;
    }
    
    public class Rows{
        public String fang_type;
        public Info info;
    }
    
    public class Info{
        public String address;
        public String baidu_lat;
        public String baidu_lng;
        public String city_id;
        public String default_image;
        public String has_sale;
        public String kaipan_new_date;
        public String lat;
        public String lng;
        public String loupan_id;
        public String loupan_name;
        public String loupan_property_type;
        public String new_price_back;
        public String new_price_value;
        public String price;
        public String region_id;
        public String region_title;
        public String sub_region_id;
        public String sub_region_title;
        public String tags;
    }
}

MyListAdapter



import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.bw.exercise.R;
import com.bw.exercise.bean.User.Rows;
import com.lidroid.xutils.BitmapUtils;

public class MyListAdapter extends BaseAdapter {

    Context context;
    public List<Rows> rows=new ArrayList<Rows>();

    public MyListAdapter(Context context){
        this.context = context;
    }
    
    /**
     * 更新数据的方法
     * @param rowslist
     */
    public void addrest(List<Rows> rowslist){
        this.rows.clear();
        this.rows.addAll(rowslist);
        this.notifyDataSetChanged();
    }
    
    @Override
    public int getCount() {
        return rows.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = View.inflate(context, R.layout.newlist_item, null);
        ImageView iv=(ImageView) view.findViewById(R.id.newlist_item_iv);
        TextView tv_address=(TextView) view.findViewById(R.id.newlist_item_tv_address);
        TextView tv_name=(TextView) view.findViewById(R.id.newlist_item_tv_name);
        TextView tv_type=(TextView) view.findViewById(R.id.newlist_item_tv_type);
        TextView tv_tags=(TextView) view.findViewById(R.id.newlist_item_tv_tags);
        BitmapUtils bitmap=new BitmapUtils(context);
        bitmap.display(iv, rows.get(position).info.default_image);
        tv_address.setText(rows.get(position).info.address);
        tv_name.setText(rows.get(position).info.loupan_name);
        tv_type.setText(rows.get(position).info.loupan_property_type);
        tv_tags.setText(rows.get(position).info.tags);
        return view;
    }

}



1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:431次
    • 积分:25
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档