Android网络请求框架:Volley简单使用

 Volley框架:2013年Google I/O大会上,Volley发布了。Volley是Google官方布的用于Android
 平台上的网络通信库,目的是使网络通信更快,更简单,更健壮。
 gitthub开源地址:https://github.com/stormzhang/AndroidVolley

* 特点:
* 网络通信更快,更简单,更健壮
* Get,POST等常用网络请求及图像高效异步处理
* 可以对多个网络请求进行优先级排序,可以多级别取消请求操作
* 网络请求的缓存处理
* 可以和Activity生命周期互动
* 缺点:不适合大数据和流媒体数据传输的网络请求,如视屏下载,大文件下载等。
* 使用步骤:
* 1,建立请求队列
* 2,将请求添加到队列中
* 3,用GET或POST(传递参数)发送请求
* 4,在请求结果的回调中进行相应的逻辑处理
* ———————————–
* Volley请求提供了三种类型请求:
* StringRequest 返回数据类型:String,本文的例子就是以这个为例
* JsonObjectRequest 返回数据类型:JsonObject
* JsonArrayRequest 返回数据类型:JsonArray

/**
 * 定义全局的Application,在这里对Volley及android-async-http框架进行配置
 * @description:
 * @date 2016-1-11 上午9:59:17
 */
public class GlobalApplication extends Application {
    /*Volley网络请求队列**/
    public static RequestQueue mQueue;
    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        mQueue=Volley.newRequestQueue(this);//初始化请求队列
    }
    /*对外获取队列对象的方法**/
    public static RequestQueue getVolleyQueue(){
        return mQueue;
    }
}

Activity中使用Volley的get与post进行网络请求:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //使用Volley的get请求
        getByVolley();
        //使用Volley的POST请求
        postByVolley();
    }

    private void postByVolley() {
        String url="http://apis.juhe.cn/mobile/get?";//用Post要把get请求后面的字段用参数的方式过去
        StringRequest request=new StringRequest(Method.POST,url, new Listener() {

            @Override
            public void onResponse(String response) {//请求成功返回的数据
                Log.v("ldm", response);
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {//请求失败的处理
                Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_SHORT).show();
            }

        }){
            @SuppressWarnings("unchecked")
            @Override
            protected Map getParams() throws AuthFailureError {//传递参数的方法
                Map param=new HashMap<>();
                param.put("phone", "13429667914");
                param.put("key", "xxxxxxxx");
                return param;
            }
        };
        request.setTag("post");
        GlobalApplication.getVolleyQueue().add(request);//把请求添加到队列中
    }

    private void getByVolley() {
       //网络请求的连接地址,xxxxxxxx指你在聚合api网站申请的对应的key值 
        String url="http://apis.juhe.cn/mobile/get?phone=13429667914&key=xxxxxxxx";
        StringRequest request=new StringRequest(Method.GET,url, new Listener() {

            @Override
            public void onResponse(String response) {//请求成功返回的数据
                Log.v("ldm", response);
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {//请求失败的处理
                Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_SHORT).show();
            }
        });
        request.setTag("get");
        GlobalApplication.getVolleyQueue().add(request);//把请求添加到队列中
    }
    //在Activity的生命周期Onstop中取消tag为“get”对应请求
    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        GlobalApplication.getVolleyQueue().cancelAll("get");
    }
}

最后不要忘记在AndroidManifest.xml中配置网络权限 :

你可能感兴趣的:(安卓学习)