HttpURLConnection的GET请求接口数据,并解析Json文件显示到Listview

public class MainActivity extends AppCompatActivity {

    private ListView listview;
    private String url = "http://result.eolinker.com/k2BaduF2a6caa275f395919a66ab1dfe4b584cc60685573?uri=tt";
    private ListView lv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //全局组件
        listview = findViewById(R.id.listview);
        //执行getdata方法
        getdata(url);

    }

    public void getdata(final String url) {
        new Thread() {
            @Override
            public void run() {
                try {
                    // 实例化接口
                    URL urll = new URL(url);
                    //打开连接
                    HttpURLConnection connection = (HttpURLConnection) urll.openConnection();
                    //设置get請求方法
                    connection.setRequestMethod("GET");
                    //设置连接耗时
                    connection.setConnectTimeout(5 * 1000);
                    //设置读取耗时
                    connection.setReadTimeout(5 * 1000);
                    //设置提交请求
                    connection.connect();
                    //实例化Message
                    Message message = new Message();
                    //获取请求码
                    int code = connection.getResponseCode();
                    //设置请求码判断
                    if (code == HttpURLConnection.HTTP_OK) {
                        //请求码为200为成功
                        message.what = 200;
                        //文件转坏流
                        InputStream stream = connection.getInputStream();
                        //实例化转字符方法
                        String data = cover(stream);
                        //
                        message.obj = data;
                        //请求的接口数据发送到主线程
                        Handler.sendMessage(message);

                    } else {
                        //请求码为300为失败
                        message.what = 300;
                        //发送
                        Handler.sendMessage(message);
                    }
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }

    private String cover(InputStream stream) throws IOException {
        //输出流
        ByteArrayOutputStream baout = new ByteArrayOutputStream();
        //定义为第一行
        int len = 1;
        //实例化byte
        byte[] bytes = new byte[512];
        //判断非空
        while ((len = stream.read(bytes)) != -1) {
            //写数据
            baout.write(bytes, 0, len);
        }
        //返回字符数组
        return new String(baout.toByteArray());
    }
    //主线程Handler
    private Handler Handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case 200:
                    //转换字符并且去除空格
                    String s = String.valueOf(msg.obj).trim().toString();
                    Toast.makeText(MainActivity.this, "" + s, Toast.LENGTH_SHORT).show();
                    //Gson解析
                    Gson gson = new Gson();

                    FoucBean foucBean = gson.fromJson(s, FoucBean.class);
                    final List list = foucBean.getResult().getData();

                    //设置适配器
                    listview.setAdapter(new BaseAdapter() {
                        @Override
                        public int getCount() {
                            return list.size();
                        }
                        @Override
                        public Object getItem(int i) {
                            return list.get(i);
                        }
                        @Override
                        public long getItemId(int i) {
                            return i;
                        }
                        @Override
                        public View getView(int i, View view, ViewGroup viewGroup) {
                            ViewHolder holder = new ViewHolder();
                            if (view == null) {
                                view = View.inflate(MainActivity.this, R.layout.title, null);
                                holder.tv1 = view.findViewById(R.id.textView1);
                                holder.tv2 = view.findViewById(R.id.textView2);
                                view.setTag(holder);
                            } else {
                                holder = (ViewHolder) view.getTag();
                            }
                            holder.tv1.setText(list.get(i).getAuthor_name());
                            holder.tv2.setText(list.get(i).getDate());
//                            ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(),holder.imageView);
                            return view;
                        }
                    });
            }
        }
    };

    class ViewHolder {
        TextView tv1, tv2;
        ImageView imageView;

    }
}

你可能感兴趣的:(Json,Listview)