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提供的功能:
通过Volley实现Json字符串请求
一个最基本的HTTP发送与响应的功能,要就是进行了以下三步操作:
1. 创建一个RequestQueue对象。
2. 创建一个Request对象。(StringRequest JsonObjectRequest)
3. 将StringRequest对象添加到RequestQueue里面。
HTTP的请求类型通常有两种,GET和POST
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. 设置要加载的图片地址。
1.ImageRequest的用法
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. 设置要加载的图片地址。
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 。
- Android网络请求库
- Android网络请求库
- Android网络请求库
- Android 网络请求库:okHttp
- Android网络请求库 android-async-http
- android-async-http Android网络请求请求库
- Android网络请求的第三库AsyncHttpclient
- Android学习之网络请求库Volley
- Android 网络请求库Retrofit简单使用
- Android学习之网络请求库Retrofit2
- android Retrofit 2.0网络请求库
- Android okHttp网络请求库详解
- 网络请求库之android-async-http
- Android网络请求库okHttp进行post、get请求
- android请求网络
- android 网络请求代理
- android网络请求连接
- Android学习--网络请求
- html中meta标签属性大全!
- 解析Spark开源框架elephas之二
- ListView全选删除CheckBox
- python strip()函数的应用
- 第 0004 题:任一个英文的纯文本文件,统计其中的单词出现的个数
- Android网络请求库
- CodeForces 343D Water Tree
- 深入讲解GCC和Make的区别(有涉及makefile文件哟!!!)
- cpu阿甘
- 用eclipse编写简单的Android工程
- ural 1110 Power
- 图解微信公众号后台服务开发(nodejs版)
- C#将图片存入SQLServer数据库并读取
- 设计模式之单例设计模式 标签: 设计模式