Android Volley学习使用

我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据。Android系统中主要提供了两种方式来进行HTTP通信,HttpURLConnection和HttpClient,几乎在任何项目的代码中我们都能看到这两个类的身影,使用率非常高。不过HttpURLConnection和HttpClient的用法还是稍微有些复杂的,如果不进行适当封装的话,很容易就会写出不少重复代码。Android开发团队也是意识到了有必要将HTTP的通信操作再进行简单化,于是在2013年GoogleI/O大会上推出了一个新的网络通信框架——Volley。既可以非常简单地进行HTTP通信,也可以轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。

下面来说说Volley的用法:

1.获取到一个RequestQueue对象,这里拿到的RequestQueue是一个请求队列对象,它可以缓存所有的HTTP请求,然后按照一定的算法并发地发出这些请求。

2.创建一个StringRequest对象用来发出一条HTTP请求,StringRequest的构造函数需要传入三个参数,第一个参数就是目标服务器的URL地址,第二个参数是服务器响应成功的回调,第三个参数是服务器响应失败的回调。

3.将这个StringRequest对象添加到RequestQueue里面

     
//1.获取一个RequestQueue对象
        RequestQueue mRequestQueue = Volley.newRequestQueue(context);

        //2.创建一个StringRequest对象
        StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://www.baidu.com", new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                 //服务器响应成功,将服务器返回的响应转换成一个Java Bean通过EventBus传递给事件监听处理
                  EventBus.getDefault().post(new ResultBeen(response));
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                //服务器响应失败,将服务器返回的响应转换成一个Java Bean通过EventBus传递给事件监听处理
                EventBus.getDefault().post(new ResultBeen(error.getMessage()));

            }
        });
        //3.将StringRequest对象添加到RequestQueue里面
        mRequestQueue.add(stringRequest);

JavaBean代码:

       
public class ResultBeen {
    private int result;
    private String response;

    public ResultBeen(String response) {
        this.response =response;
    }

    public int getResult() {
        return result;
    }

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

    public String getResponse() {
        return response;
    }

    @Override
    public String toString() {
        return response;
    }
}

事件监听处理:

     
@DebugLog
    public void onEventMainThread(ResultBeen event) {

        this.tv_result.setText(event.getResponse());

    }

4.另外,由于Volley是要访问网络的,因此千万不要忘记在你的AndroidManifest.xml中添加如下权限

     
<uses-permission android:name="android.permission.INTERNET" />

相关推荐