• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android网络编程(三)Volley用法全解析

Android网络编程(三)Volley用法全解析

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android volley,android volley框架,android volley详解,android volley使用,android volley官网等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android网络编程(三)Volley用法全解析


相关文章
Android网络编程(一)HTTP协议原理
Android网络编程(二)HttpClient与HttpURLConnection

前言

Volley想必很多人都用过,为了建立网络编程的知识体系,Volley是必须要讲的知识点,所以我这里有必要再次介绍一下Volley的使用。

1.Volley简介

在2013年Google I/O大会上推出了一个新的网络通信框架Volley。Volley既可以访问网络取得数据,也可以加载图片,并且在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。在使用Volley前请下载Volley库并放在libs目录下并add到工程中。 

2.Volley网络请求队列

Volley请求网络都是基于请求队列的,开发者只要把请求放在请求队列中就可以了,请求队列会依次进行请求,一般情况下,一个应用程序如果网络请求没有特别频繁则完全可以只有一个请求队列(对应Application),如果非常多或其他情况,则可以是一个Activity对应一个网络请求队列,这就要看具体情况了,首先创建队列:

  RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());

3.StringRequest的用法

StringRequest返回的数据是String类型的,我们查看下StringRequest的源码:

public class StringRequest extends Request {
    private final Listener mListener;

    public StringRequest(int method, String url, Listener listener, ErrorListener errorListener) {
        super(method, url, errorListener);
        this.mListener = listener;
    }

    public StringRequest(String url, Listener listener, ErrorListener errorListener) {
        this(0, url, listener, errorListener);
    }
...省略
}

有两个构造函数,其中第一个比第二个多了一个请求的方法,如果采用第二个则默认是GET请求。好了,我们试着用GET方法来请求百度:

        //创建请求队列
        RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());
        StringRequest mStringRequest = new StringRequest(Request.Method.GET, "http://www.baidu.com",
                new Response.Listener() {
                    @Override
                    public void onResponse(String response) {
                        Log.i("wangshu", response);
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("wangshu", error.getMessage(), error);
            }
        });
        //将请求添加在请求队列中
        mQueue.add(mStringRequest);

当然别忘了添加网络访问权限:

 

请求结果不用说是百度界面的html文件:

这里写图片描述

4.JsonRequest的用法

和StringRequest类似,我们直接上代码:

  RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());
        JsonObjectRequest mJsonObjectRequest = new JsonObjectRequest(Request.Method.POST,"http://api.1-blog.com/biz/bizserver/article/list.do",
                new Response.Listener() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d("wangshu", response.toString());
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("wangshu", error.getMessage(), error);
            }
        }
        );
        mQueue.add(mJsonObjectRequest);

运行程序返回的是一堆新闻的Json数据:
这里写图片描述

为了解析这些Json数据,我们用Gson来解析Json数据。将jar包放在libs目录下并add进工程中。我们开始写article类用于存储数据:

public class Article {
    private String desc;
    private String status;
    private List detail = new ArrayList();

    public List getDetail() {
        return detail;
    }

    public void setDetail(List detail) {
        this.detail = detail;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }


    public class detail {
        private String title;
        private String article_url;
        private String my_abstract;
        private String article_type;

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public String getArticle_url() {
            return article_url;
        }

        public void setArticle_url(String article_url) {
            this.article_url = article_url;
        }

        public String getMy_abstract() {
            return my_abstract;
        }

        public void setMy_abstract(String my_abstract) {
            this.my_abstract = my_abstract;
        }

        public String getArticle_type() {
            return article_type;
        }

        public void setArticle_type(String article_type) {
            this.article_type = article_type;
        }
    }
}

最后我们改写JsonRequest的请求回调:

  RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());
        JsonObjectRequest mJsonObjectRequest = new JsonObjectRequest(Request.Method.POST,"http://api.1-blog.com/biz/bizserver/article/list.do",
                new Response.Listener() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Article mArticle=new Gson().fromJson(response.toString(), Article.class);
                        ListmList=mArticle.getDetail();
                        String title=mList.get(0).getTitle();
                        Log.d("wangshu", title);
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("wangshu", error.getMessage(), error);
            }
        }
        );
        mQueue.add(mJsonObjectRequest);

来看看打印结果:
这里写图片描述

5.使用ImageRequest加载图片

ImageRequest已经是过时的方法了,和前面两种的用法类似:

   RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());
        ImageRequest imageRequest = new ImageRequest(
                "http://img.my.csdn.net/uploads/201603/26/1458988468_5804.jpg",
                new Response.Listener() {
                    @Override
                    public void onResponse(Bitmap response) {
                        iv_image.setImageBitmap(response);
                    }
                }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                iv_image.setImageResource(R.drawable.ico_default);
      



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Volley 源码解析,volley源码解析
  • Android网络编程(四)从源码解析Volley
  • volley框架的使用
  • Android网络编程(三)Volley用法全解析
  • Android Volley框架的使用(5),androidvolley
  • Volley的基本使用,Volley使用
  • Volley源码解析
  • Android Volley框架的使用(4),androidvolley
  • Android Volley框架的使用,androidvolley框架

相关文章

  • 2017-07-23Android搜索结果显示高亮(有数据滑动底部自动刷新)
  • 2017-05-26win通过dos配置注册列表
  • 2017-05-26andriod打开摄像头和打开相册,andriod摄像头相册
  • 2017-05-26仿拉手团购App6--注册界面,仿拉手团购app6--
  • 2017-05-26GridView嵌套在ScrollView里只有一行的问题,gridviewscrollview
  • 2017-05-26Fiddler 手机抓包 手机联网异常解决方案,fiddler解决方案
  • 2017-05-26eclipse — 导入android项目后识别成java项目的问题及解决,eclipseandroid
  • 2017-05-26Android中的属性动画(Property Animation)——Android开发艺术探索笔记
  • 2017-05-26在Kotlin上怎样用Mockito2 mock final 类(KAD 23),kotlinmockito2
  • 2017-05-26Android-绘制爱心,android-绘制

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • android设备使用usb串口传输数据,android设备usb串口
    • Android安全专项之Xposed劫持用户名密码实践
    • 7.2.2 Android JSON数据解析
    • 5个Android开发中比较常见的内存泄漏问题及解决办法,android比较常见
    • Hello,Android
    • 手机安全卫士——手机防盗页面,安全卫士防盗页面
    • 自定义图片轮播,简单就是好用,自定义图片轮播
    • 【微学堂】第22期| Nginx的性能优化
    • Activity的四种启动模式,activity四种模式
    • Android四大组件之BroadcastReceiver

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有