Android网络请求库

来源:互联网 发布:js字符串转为json对象 编辑:程序博客网 时间:2024/06/18 05:23

背景:    我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据。Android系统中主要提供了两种方式来进行HTTP通信,HttpURLConnection和HttpClient,几乎在任何项目的代码中我们都能看到这两个类的身影,使用率非常高。    不过HttpURLConnection和HttpClient的用法还是稍微有些复杂的,如果不进行适当封装的话,很容易就会写出不少重复代码。于是乎,一些Android网络通信框架也就应运而生,比如说AsyncHttpClient,它把HTTP所有的通信细节全部封装在了内部,我们只需要简单调用几行代码就可以完成通信操作了。再比如Universal-Image-Loader,它使得在界面上显示网络图片的操作变得极度简单,开发者不用关心如何从网络上获取图片,也不用关心开启线程、回收图片资源等细节,Universal-Image-Loader已经把一切都做好了。

Volley

    在volley之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于 AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,今年的 Google I/O 2013上,Volley 发布了。Volley 是 Android 平台上的网络通信库,能使网络通信更快,更简单,更健壮。适合于数据量不大,但通信频繁。(流星的例子)不适合进行大数据和流媒体的网络请求,如下载,上传大文件或视频一类的。

      Volley各种Request的使用方法,包括StringRequest、JsonRequest、ImageRequest等。其中StringRequest用于请求一条普通的文本数据,JsonRequest(JsonObjectRequest、JsonArrayRequest)用于请求一条JSON格式的数据,ImageRequest则是用于请求网络上的一张图片。

 volley提供的功能:

1.Get Post 异步加载网络图像
2.可以对网络请求进行排序优先级管理
3.网络请求的缓存
4.多级别取消请求
5.Activity结束的同时取消所有的网络请求。

通过Volley实现Json字符串请求  

一个最基本的HTTP发送与响应的功能,要就是进行了以下三步操作:

1. 创建一个RequestQueue对象。

2. 创建一个Request对象。(StringRequest JsonObjectRequest)

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

HTTP的请求类型通常有两种,GET和POST

StringRequest来说:

StringRequest stringRequest = new StringRequest(Method.GET, url,  listener, errorListener); 


StringRequest stringRequest = new StringRequest(Method.POST, url,  listener, errorListener);

JsonObjectRequest来说

类似于StringRequest,JsonRequest也是继承自Request类的,不过由于JsonRequest是一个抽象类,因此我们无法直接创建它的实例,那么只能从它的子类入手了。JsonRequest有两个直接的子类,JsonObjectRequest和JsonArrayRequest,从名字上你应该能就看出它们的区别了吧?一个是用于请求一段JSON数据的,一个是用于请求一段JSON数组的。服务器返回给我们的数据是JSON格式的,并且onResponse()方法中携带的参数也正是一个JSONObject对象,之后只需要从JSONObject对象取出我们想要得到的那部分数据就可以了

代码如下:

通过Volley异步加载图片

1.ImageRequest的用法

1.首先获取一个RequestQueue队列
2.new出一个ImageRequest对象 6个参数
3.最后将这个ImageRequest对象添加到RequestQueue里就可以了

2.ImageLoader的用法

而ImageLoader就是一个很好的例子。ImageLoader也可以用于加载网络上的图片,并且它的内部也是使用ImageRequest来实现的,不过ImageLoader明显要比ImageRequest更加高效,因为它不仅可以帮我们对图片进行缓存,还可以过滤掉重复的链接,避免重复发送请求。

由于ImageLoader已经不是继承自Request的了,所以它的用法也和我们之前学到的内容有所不同,总结起来大致可以分为以下四步:

1. 创建一个RequestQueue对象。

2. 创建一个ImageLoader对象。

3. 获取一个ImageListener对象。

4. 调用ImageLoader的get()方法加载网络上的图片。


3.NetworkImageView的用法

NetworkImageView是一个自定义控制,它是继承自ImageView的,具备ImageView控件的所有功能,并且在原生的基础之上加入了加载网络图片的功能。NetworkImageView控件的用法要比前两种方式更加简单,大致可以分为以下五步:

1. 创建一个RequestQueue对象。

2. 创建一个ImageLoader对象。

3. 在布局文件中添加一个NetworkImageView控件。

4. 在代码中获取该控件的实例。

5. 设置要加载的图片地址。


自定义GsonRequest


JsonRequest的数据解析是利用Android本身自带的JSONObject和JSONArray来实现的,配合使用JSONObject和JSONArray就可以解析出任意格式的JSON数据。不过也许你会觉得使用JSONObject还是太麻烦了,还有很多方法可以让JSON数据解析变得更加简单,比如说GSON。遗憾的是,Volley中默认并不支持使用自家的GSON来解析数据,不过没有关系,通过上面的学习,相信你已经知道了自定义一个Request是多么的简单,那么下面我们就来举一反三一下,自定义一个GsonRequest。


首先我们需要把gson的jar包添加到项目当中,jar包的下载地址是:https://code.google.com/p/google-gson/downloads/list 。

实例看这篇文章:http://blog.csdn.net/guolin_blog/article/details/17612763

0 0
原创粉丝点击