通过异步AsyncTask进行网络连接和Gson解析

当进行耗时操作时,一般用异步任务或开子线程的方式来完成,本文通过AsynvTask异步任务来进行

MainActivity代码

public class MainActivity extends AppCompatActivity {
    private TextView tv;
    String url="http://169.254.167.244:8080/Web_Data/GetPhones?pagesize=10&pageindex=1";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv=(TextView)findViewById(R.id.tv);
        new AsyncTask<String, Void, String>() {
            @Override
            protected String doInBackground(String... params) {
                try {
                    URL url1=new URL(url);
                    HttpURLConnection huc=(HttpURLConnection)url1.openConnection();
                    huc.setConnectTimeout(3000);//设置请求超时时间
                    huc.setRequestMethod("GET");//设置请求方法
                    huc.connect();//去连接网络
                    //如果响应码返回是200就是请求成功
                    if(huc.getResponseCode()==200){
                        InputStream inputStream = huc.getInputStream();
                        byte[] b=new byte[1024];
                        int len=0;
                        ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
                        StringBuilder sb=new StringBuilder();
                        while((len=inputStream.read(b))!=-1){
                            sb.append(new String(b,0,len));
                            outputStream.write(b,0,len);
                        }
                        byte[] img = outputStream.toByteArray();
                        Bitmap bitmap= BitmapFactory.decodeByteArray(img,0,img.length);
                        return bitmap;
                     }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                Log.i("json","json:"+s);
                Gson gson=new Gson();
                Phone phone = gson.fromJson(s, Phone.class);
                String brand = phone.getPhones().get(0).getBrand();
                tv.setText(brand);
            }
        }.execute(url);
    }
}
要解析的Phone实体类,一般我们创建实体类是自动解析,通过Alt+Ins


选择gsonformat打开界面,把接口复制粘贴进去再OK,json就自动解析为实体类啦

public class Phone {

    /**
     * status : OK
     * page : 10
     * count : 1
     * phones : [{"id":1,"price":8044.13,"brand":"三星","model":"V41"},{"id":2,"price":6925.13,"brand":"华为","model":"V31"},{"id":3,"price":201.63,"brand":"三星","model":"V51"},{"id":4,"price":4272.2,"brand":"魅族","model":"V31"},{"id":5,"price":7530.54,"brand":"中兴","model":"V51"},{"id":6,"price":6797,"brand":"魅族","model":"V31"},{"id":7,"price":8633.2,"brand":"三星","model":"V51"},{"id":8,"price":1833.06,"brand":"三星","model":"V01"},{"id":9,"price":2630.04,"brand":"小米","model":"V01"},{"id":10,"price":6300.96,"brand":"小米","model":"V31"}]
     */

    private String status;
    private int page;
    private int count;
    private List<PhonesBean> phones;

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public List<PhonesBean> getPhones() {
        return phones;
    }

    public void setPhones(List<PhonesBean> phones) {
        this.phones = phones;
    }

    public static class PhonesBean {
        /**
         * id : 1
         * price : 8044.13
         * brand : 三星
         * model : V41
         */

        private int id;
        private double price;
        private String brand;
        private String model;

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public double getPrice() {
            return price;
        }

        public void setPrice(double price) {
            this.price = price;
        }

        public String getBrand() {
            return brand;
        }

        public void setBrand(String brand) {
            this.brand = brand;
        }

        public String getModel() {
            return model;
        }

        public void setModel(String model) {
            this.model = model;
        }
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值