Volley发起网络请求及Gson

这里写图片描述

1、将请求加入请求队列;
2、在队列中找到这个请求处理它;
3、如果以前处理过相同的请求,直接从缓存中拿结果;
4、如果以前没处理过,那么发起网络请求,拿取结果,并将它放入缓存。

public class HttpUtil {
    //创建一个Volley的访问队列
    public static RequestQueue queue;

    public static void getWeather(final Context context){
        //1)判断有没有队列
        if(queue==null){
            //如果没有队列,就创建请求队列
            queue = Volley.newRequestQueue(context);
        }
        //2)创建网络请求
        String url = "**********************";
        StringRequest request = new StringRequest(url, new Listener<String>() {

            @Override
            public void onResponse(String result) {
                //TODO 网络访问成功后,会调用该方法
                //onResponse方法是在主线程上调用的
                //Log.d("TAG", result);
                //使用Gson,将result转为MyWeather对象
                Gson gson = new Gson();
                MyWeather myweather = gson.fromJson(result, MyWeather.class);
                Log.d("TAG",myweather.toString());
            }
        }, new ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError arg0) {
                //网络访问失败后,会调用该方法
                //onErrorResponse是在主线程上调用的
                Toast.makeText(context, "网络繁忙,稍后重试", Toast.LENGTH_SHORT).show();
            }
        });

        //3)需要把网络访问请求对象放入队列中
        queue.add(request);
    }
}

另:Gson解析时,实体类的编写格式示例:

注意:变量名要和json的相应的key名完全一致

public class MyWeather {
    String reason;
    Result result;
    int error_code;

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public Result getResult() {
        return result;
    }

    public void setResult(Result result) {
        this.result = result;
    }

    public int getError_code() {
        return error_code;
    }

    public void setError_code(int error_code) {
        this.error_code = error_code;
    }



    @Override
    public String toString() {
        return "MyWeather [reason=" + reason + ", result=" + result
                + ", error_code=" + error_code + "]";
    }



    public static class Result{
        Data data;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值