Android学习笔记(四):Volley的使用

转自:http://my.oschina.net/summerpxy/blog/213207

使用Volley以Http get的方式请求JSONObject对象,我们需要使用JsonObjectRequest类的构造方法。

new JsonObjectRequest(url,jsonObject,listener)去构造一个请求request。

url:请求的地址。

jsonObject:需要传递的数据,如果是以get方式传递,则为null,如果是以post方式传递,则需要设置数据。

listener:reponse.listener()的实例。

RequestQueue queue = Volley.newRequestQueue(this);
        String url = "http://m.weather.com.cn/data/101201401.html";
        JsonObjectRequest objRequest = new JsonObjectRequest(url, null,
                new Response.Listener() {
                    @Override
                    public void onResponse(JSONObject obj) {
                        System.out.println("----------:" + obj);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.getMessage();
                    }

                });
        objRequest.setTag("obj");
        queue.add(objRequest);

如果是以Post方式去请求,需要设置post的数据。

Map<String,String> map=new HashMap<String,String>();
        map.put("token", "AbCdEfGh123456");
        JSONObject params=new JSONObject(map);

        RequestQueue queue = Volley.newRequestQueue(this);
        String url = "http://m.weather.com.cn/data/101201401.html";
        JsonObjectRequest objRequest = new JsonObjectRequest(url, params,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject obj) {
                        System.out.println("----------:" + obj);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.getMessage();
                    }

                });

在添加当前的request到队列中的时候,我们可以指定优先级,具体是要重写request的getPriority()方法

JsonObjectRequest objRequest = new JsonObjectRequest(url, params,
                new Response.Listener() {
                    @Override
                    public void onResponse(JSONObject obj) {
                        System.out.println("----------:" + obj);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.getMessage();
                    }

                }) {
            @Override
            public com.android.volley.Request.Priority getPriority() {
                return Priority.HIGH;
            }
        };

如果想要取消当前队列中的request,可以调用cancelAll()。

objRequest.setTag("obj");
        queue.add(objRequest);
        //取消请求
        queue.cancelAll("obj");

你可能感兴趣的:(Android学习笔记)