Android——Volley学习

本文介绍了Volley网络库的基本概念,包括如何下载和使用Volley进行GET和POST请求,以及如何处理JSON数据。通过示例代码,展示了创建RequestQueue、StringRequest和JsonRequest的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚刚接触框架不知何从下手,我结合郭霖大神的博客以及volley源码进行学习,终于掌握点基本。

郭霖的博客地址:https://blog.youkuaiyun.com/guolin_blog/article/details/17482095

volley源码:https://github.com/google/volley

1.Volley简介

volley的英文意思为‘群发’、‘迸发’。Volley是2013年谷歌官方发布的一款Android平台上的网络通信库。Volley非常适合一些数据量不大,但需要频繁通信的网络操作。使用Volley进行网络开发可以使我们的开发效率得到很大的提升,而且性能的稳定性也比较高。但是Volley不适用于文件的上传下载操作。

2.Volley下载

网上查找,我之前找了好久,没有找到满意的。直接下载郭霖的:http://download.youkuaiyun.com/detail/sinyu890807/7152015,他的需要积分,没有积分的可以直接淘宝上面购买。然后导入到android studio项目中去。

3. StringRequest的用法

三大步骤:1.创建一个RequestQueue消息队列对象。

                  2. 创建一个StringRequest对象。

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

如图所示:

//get请求
        bt_get_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //创建一个请求队列
                RequestQueue requestQueue= Volley.newRequestQueue(MainActivity.this);
                //创建一个请求
                String url="https://www.baidu.com/";
                StringRequest stringRequest=new StringRequest(url, new Response.Listener<String>() {
                    //正确接受数据回调
                    @Override
                    public void onResponse(String s) {
                        tv_volley_result.setText(s);
                    }
                }, new Response.ErrorListener() { //发生异常后的监听回调
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        tv_volley_result.setText("加载失败"+volleyError);
                    }
            });
                //将创建的请求添加请求队列
                requestQueue.add(stringRequest);
            }
        });

POST请求如图所示:

//post请求
        bt_post_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //创建一个消息队列
                RequestQueue requestQueue=Volley.newRequestQueue(MainActivity.this);
                String url="https://www.baidu.com/";
                //创建一个POST请求
                StringRequest stringRequest=new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
                    @Override
                    public void onResponse(String s) {
                        tv_volley_result.setText(s);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        tv_volley_result.setText("加载失败"+volleyError);
                    }
            }){
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {
                        //参数数据
                        Map<String, String> map=new HashMap<String, String>();
//                        map.put("valuel","paraml");
                        return map;
                    }
                };
                //将POST请求添加请求队列
                requestQueue.add(stringRequest);
            }
        });

4. JsonRequest的用法

JsonRequest的用法类似于StringRequest,JsonRequest也是继承自Request类的,不过由于JsonRequest是一个抽象类,因此我们无法直接创建它的实例,那么只能从它的子类入手了。JsonRequest有两个直接的子类,JsonObjectRequest和JsonArrayRequest。

如图所示:

//请求json数据
        bt_json_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                RequestQueue requestQueue=Volley.newRequestQueue(MainActivity.this);
                String url="http://www.weather.com.cn/data/sk/101010100.html ";
                JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject jsonObject) {
                        tv_volley_result.setText(jsonObject.toString());
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        tv_volley_result.setText("请求失败"+volleyError);
                    }
            });
                requestQueue.add(jsonObjectRequest);
            }
        });
中国天气网提供的一个查询天气信息的接口:http://www.weather.com.cn/data/sk/101010100.html

总结:由于Volley内部是怎么进行操作的,我们并不知道,我们使用Volley的时候按照那三步走就可以啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值