Volley的简单使用

1.什么是Volley

Google推出的一个网络通讯框架,简化了HttpURLConnection和HttpClient的操作方式。可以以极简的方式执行get或post。
不过他还是有缺点的,执行post时添加参数较为复杂。

2.导入jar包

gradle方式导入:

compile 'com.mcxiaoke.volley:library:1.0.19'

3.基本的HTTP请求

首先我们需要一个StringRequest对象,这个对象中将包含请求的地址,请求成功监听器,请求失败监听器。
        StringRequest stringRequest = new StringRequest("http://baidu.com", new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.i("demo",response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("demo",error.getMessage(),error);
            }
        });

然后如何执行这个请求呢?我们需要将这个请求加入到Volley的请求队列中。接下来将先获取请求队列。
注意这里拿到的RequestQueue是一个请求队列对象,它可以缓存所有的HTTP请求,然后按照一定的算法并发地发出这些请求。RequestQueue内部的设计就是非常合适高并发的,因此我们不必为每一次HTTP请求都创建一个RequestQueue对象,这是非常浪费资源的,基本上在每一个需要和网络交互的Activity中创建一个RequestQueue对象就足够了。
requestQueue = Volley.newRequestQueue(this);
还要注意的是,因为是要网络请求,所以不要忘了加上网络访问的权限。
<uses-permission android:name="android.permission.INTERNET" />  

最后将请求加入到请求队列中即可。
        requestQueue.add(stringRequest);

好了,现在运行程序,可以在控制台中看到如下的输出信息了。



以上是GET的请求方式,那如何执行POST请求呢?
只需使用StringRequest的另一个构造函数即可。
        StringRequest stringRequest = new StringRequest(StringRequest.Method.POST, "http://baidu.com", new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.i("demo", response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("demo", error.getMessage(), error);
            }
        });


4.HTTP请求JSON

JSON请求有两种,分别是JsonObjectRequest和JsonArrayRequest。我们将使用JsonObjectRequest举例。
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://m.weather.com.cn/data/101010100.html", null,  
        new Response.Listener<JSONObject>() {  
            @Override  
            public void onResponse(JSONObject response) {  
                Log.d("demo", response.toString());  
            }  
        }, new Response.ErrorListener() {  
            @Override  
            public void onErrorResponse(VolleyError error) {  
                Log.e("demo", error.getMessage(), error);  
            }  
        });  

然后将这个请求如StringRequest一样,加入到请求队列中即可。





参考文章:http://www.kwstu.com/ArticleView/kwstu_20144118313429
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章