Android Volley框架及其get,post方式的使用

来源:互联网 发布:mac下载软件存在那 编辑:程序博客网 时间:2024/04/29 22:12
欢迎转载,转载请标明出处^_^

2013年Google在 I/O大会上发布了Volley框架,它是Android平台上的开源网络通信库,封装了Http网络请求,异步任务,缓存,图片下载等功能。特点是能使网络通信更简单,更快速,更稳定。尤其适合处理数据量不大,但是网络通信频繁的场景。
Android-Volley的功能如下:

1:JSON,图像等的异步下载;
2: 网络请求的排序(scheduling)
3:缓存
4: 网络请求的优先级处理
5:多级别取消请求
6:和Activity生命周期的联动

Android-Volley的使用步骤::

1:加载Volley.jar至项目libs目录,添加依赖。
2:创建RequestQueue请求队列。
3:创建Request对象。Request是抽象类,我们常用的子类对象有StringRequestImageRequetJsonArrayRequestJsonObjectRequest
Request对象添加到RequestQueue中。
注意当使用Volley进行Post请求并传递参数的时候,需要重写Request对象的getParams方法。

1:StringRequest的用法:

使用StringRequest进行网络请求的实现过程如下:
1、 创建RequestQueue请求队列
代码:RequestQueue requestQueue = Volley.newRequestQueue(this);
2、 创建StringRequest对象,构造函数说明如下

1:
StringRequest(int method, //请求方式, 0:GET, 1:POST默认为Get
String url, //请求网址
Response.Listener listener, //响应成功监听接口
Response.ErrorListener errorListener)//响应错误监听接口

2:
StringRequest(String url, //网址
Response.Listener listener, //响应成功监听接口
Response.ErrorListener errorListener)//响应错误监听接口

3、将StringRequest对象添加到请求队列中
代码:requestQueue.add(StringRequest);

StringRequest小实例(GET请求):

private void stringRequest(String url){        StringRequest stringRequest = new StringRequest(url,                new Response.Listener<String>() {                //onResponse(String s)中的s是系统自动调用并返回的字符串,可以是json,html,xml等等。                    @Override                    public void onResponse(String s) {                    //这里执行网络连接成功后的操作,比如读取数据等,这里是笔者基于本地的测试,直接复制代码不可运行,读者可自己实现其他功能,例如可返回百度首页的html代码                        try {                            JSONObject jsonObject = new JSONObject(s);                            if (jsonObject.has("name")){                                Toast.makeText(getBaseContext(),jsonObject.get("name").toString(),Toast.LENGTH_SHORT).show();                            }                        } catch (JSONException e) {                            e.printStackTrace();                        }                    }                },                new Response.ErrorListener() {                    @Override                    public void onErrorResponse(VolleyError volleyError) {                    //这里执行网络连接失败的操作,比如一些提示等等。                        Toast.makeText(getBaseContext(),"网络异常",Toast.LENGTH_SHORT).show();                    }                }        );        //添加请求        requestQueue.add(stringRequest);    }

StringRequest小实例(POST请求):

在Volley框架中,POST请求方式也使用StringRequest对象来完成,StringRequest继承自基类RequestRequest类里面有一个getParams()方法用于获取参数,但是并没有为我们实现这个方法,这就需要我们自定义一个类去继承StringRequet,并且重写getParams()方法。

实例:

新建类VolleyStringPost继承StringRequest

public class VolleyStringPost extends StringRequest {    private Map map;    public VolleyStringPost(String url,                            Response.Listener<String> listener,                            Response.ErrorListener errorListener) {        //Method.POST是post请求        //这里系统提供了两个构造,另一个构造中有int method参数,0:get,1:post,默认是get        //这里选择无int method的构造,但在super()中传入了Method.POST(系统值,值为1),也就规定了该方法就是post方式        //这样的好处,不用再传入int method参数        super(Method.POST,url, listener, errorListener);        map = new HashMap();    }    //该方法自己定义,用于传入参数    public void putValues(String key,String values){        map.put(key,values);    }    //post方式必须重写该方法,里面只需返回map即可,系统自动调用    @Override    protected Map<String, String> getParams() throws AuthFailureError {        return map;    }}

调用:

//用法同get方式一样private void stringRequestPost(String url){    //这里实例的是 VolleyStringPost ,因为继承StringRequest,所有结构同StringRequest一样。        VolleyStringPost post = new VolleyStringPost(url,                new Response.Listener<String>() {                    @Override                    public void onResponse(String s) {                        //连接成功操作                        Toast.makeText(getBaseContext(),s,Toast.LENGTH_SHORT).show();                    }                },                new Response.ErrorListener() {                    @Override                    public void onErrorResponse(VolleyError volleyError) {                    //连接失败操作                        Toast.makeText(getBaseContext(),"网络异常",Toast.LENGTH_SHORT).show();                    }                }        );        //调用VolleyStringPost 中的putValues()方法,传入参数        post.putValues("option","getUser");        //添加请求        requestQueue.add(post);    }

以上就是Android Volley框架的基本介绍及其get,post方式的使用,若有补充,会持续更新。

0 0
原创粉丝点击