他山之石之Volley和fastJson加载网络图片

来源:互联网 发布:nginx 分布式缓存原理 编辑:程序博客网 时间:2024/05/29 10:51

用Volley和fastJson实现网络请求和解析数据

1、使用Volley网络请求消息关键是有一个消息队列对象RequestQueue和返回值对象stringrequest;当然这里的返回值对象还可以有其余的对象。

实现代码:ReqestQueue requestqueue=Volley.newRequestQueue(this.context);

通常在请求网络中保证只有一个消息队列,可以用单例的方法保证是同一个消息队列。其次,需要有一个服务端请求返回来的信息stringrequst对象,实现代码:

StringRequest stringrequest=new StringRequest(url,new Response.Listner<String>,new Response.ErrorListner<String>);

这是我们通常用的一个构造函数,第一个表示为请求网址,第二个是一个接口类型参数(成功的返回值对象),第三个同样为接口类型的返回参数(失败的返回值对象)。还有一个四个参数的构造函数,和前面三个的差别在于第一个是请求方式,其余的一样,三个参数的默认为get请求方式。请求完成后,需要把stringrequest加入add到消息队列中。这样就获得到了请求的网络数据。

2、我们通过对返回值Response.Listner<String>对象实时监听后,在对返回值字符串对象进行解析。

   对于Json数据的格式,这里选择用fastJson进行解析。
url="https://route.showapi.com/341showapi_appid=20697&showapi_sign=6305ff6ef59c46ebba4566ade35745c9";

这里是我们解析的网络资源位置,而返回的是一个含有url类型的网络图片地址,我们实现用缓存的方式对网络图片进行加载。
需要一个工具为: ImageLoader.ImageCache(图片缓存机制),加载一个位图bitmap。我们先将网络的图片解析成一个位图型的数据进行缓存,然后再利用图片加载器(imageLoader)获得该图片对象:

 ImageLoader imageLoader=new ImageLoader(requestQueue, new BitmapCache());

 NetworkImageView有一个与此对应的NetworkImageView.setImageUrl(url,ImageLoader)方法(url是返回的图片网络地址),BitmapCache是实现了IamgeLoader.ImageCache这个图片缓存接口的实例。这是图片大致的加载的思路过程。借助一个缓存机制临时存储位图,还加上一个网络图片加载器加载图片,利用NetworkImageView进行setXXX就实现了这一业务逻辑。这里的NetworkImageView是专门获取网络图片的视图对象,该对象继承在Volley的工程包中,这里也彰显了Volley的强大。

3、打开网络我们发现在返回的stringrequest的字符串类型是一个Json的数据对象。利用fastJson第三方包解析工具将返回的JSON数据对象解析成一个JSONObject。需要注意的地方是在解析的时候要确保Json数据对象的属性和网络返回的一样,否则报错,但是如果相对应的属性没有或者缺少都不会有异常,但必须要保证匹配,才可以拿到对应的属性值。这是用fastJson方法对json格式的数据解析的关键。接下来用何种视图(比如ListView)将这些图片展示出来就随心所欲了。这是用Volley和FastJson请求和解析网络图片数据的一个简要介绍。后续慢慢完善。


0 0