Android Volley的基本用法
来源:互联网 发布:java sftp下载文件 编辑:程序博客网 时间:2024/04/28 17:37
主要是参照
http://blog.csdn.net/guolin_blog/article/details/17482095
和http://codekk.com/open-source-project-analysis/detail/Android/grumoon/Volley%20%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90学习的。
关于Volley的安装可以参看http://blog.csdn.net/gulumi_mmga/article/details/46301461
以下总结了StringRequest,JsonRequest,ImageRequest,ImageLoader和NetworkImageView的用法
1. StringRequest的用法
创建一个RequestQueue对象。
创建一个StringRequest对象。
将StringRequest对象添加到RequestQueue里面。
// 获取到一个RequestQueue对象 RequestQueue mQueue = Volley.newRequestQueue(MainActivity.this);// 创建一个StringRequest对象.需要传入三个参数,// 第一个参数就是目标服务器的URL地址,// 第二个参数是服务器响应成功的回调,// 第三个参数是服务器响应失败的回调。 StringRequest stringRequest = new StringRequest("http://www.baidu.com", new Response.Listener<String>() { @Override public void onResponse(String response) { Log.d(">>>>>>>>>", response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e(">>>>>>>>>>", error.getMessage(), error); } });// 将这个StringRequest对象添加到RequestQueue里面 mQueue.add(stringRequest); }
如果想要发出一条POST请求应该怎么做呢?StringRequest中还提供了另外一种四个参数的构造函数,其中第一个参数就是指定请求类型的,我们可以使用如下方式进行指定:
StringRequest stringRequest = new StringRequest(Method.POST, url, listener, errorListener);
可是这只是指定了HTTP请求方式是POST,那么我们要提交给服务器的参数又该怎么设置呢?很遗憾,StringRequest中并没有提供设置POST参数的方法,但是当发出POST请求的时候,Volley会尝试调用StringRequest的父类——Request中的getParams()方法来获取POST参数,那么解决方法自然也就有了,我们只需要在StringRequest的匿名类中重写getParams()方法,在这里设置POST参数就可以了,代码如下所示:
StringRequest stringRequest = new StringRequest(Method.POST, url, listener, errorListener) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put("params1", "value1"); map.put("params2", "value2"); return map; } };
2. JsonRequest的用法
和StringRequest用法基本没有区别
RequestQueue mQueue = Volley.newRequestQueue(MainActivity.this); JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://m.weather.com.cn/data/101010100.html", null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.d(">>>>>>>>>>>>>>>", response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e(">>>>>>>>>>>", error.getMessage(), error); } }); mQueue.add(jsonObjectRequest);
这里我们填写的URL地址是http://m.weather.com.cn/data/101010100.html,这是中国天气网提供的一个查询天气信息的接口,响应的数据就是以JSON格式返回的,然后我们在onResponse()方法中将返回的数据打印出来。
这样当HTTP通信完成之后,服务器响应的天气信息就会回调到onResponse()方法中,并打印出来。现在运行一下程序,发出这样一条HTTP请求,就会看到LogCat中会打印出如下图所示的数据。
由此可以看出,服务器返回给我们的数据确实是JSON格式的,并且onResponse()方法中携带的参数也正是一个JSONObject对象,之后只需要从JSONObject对象取出我们想要得到的那部分数据就可以了。
3. ImageRequest的用法
RequestQueue mQueue = Volley.newRequestQueue(MainActivity.this);// 第一个参数就是图片的URL地址// 第二个参数是图片请求成功的回调,这里我们把返回的Bitmap参数设置到ImageView中// 第三第四个参数分别用于指定允许图片最大的宽度和高度,0为不限制// 第五个参数用于指定图片的颜色属性,其中ARGB_8888可以展示最好的颜色属性每个图片像素占据4个字节的大小,// RGB_565则表示每个图片像素占据2个字节大小// 第六个参数是图片请求失败的回调 ImageRequest imageRequest = new ImageRequest("http://img.my.csdn.net/uploads/201404/13/1397393290_5765.jpeg", new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap response) { imageView.setImageBitmap(response); } },0,0, Bitmap.Config.RGB_565, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Toast.makeText(MainActivity.this, "读取错误", Toast.LENGTH_SHORT).show(); } }); mQueue.add(imageRequest); }
4. ImageLoader的用法
ImageLoader也可以用于加载网络上的图片,并且它的内部也是使用ImageRequest来实现的,不过ImageLoader明显要比ImageRequest更加高效,因为它不仅可以帮我们对图片进行缓存,还可以过滤掉重复的链接,避免重复发送请求。
1. 创建一个RequestQueue对象。2. 创建一个ImageLoader对象。3. 获取一个ImageListener对象。4. 调用ImageLoader的get()方法加载网络上的图片。
先新建一个BitmapCache类并实现ImageCache接口
public class BitmapCache implements ImageLoader.ImageCache { private LruCache<String, Bitmap> mCache; public BitmapCache() { int maxSize = 10 * 1024 * 1024; mCache = new LruCache<String, Bitmap>(maxSize){ @Override protected int sizeOf(String key, Bitmap bitmap) { return bitmap.getRowBytes() * bitmap.getHeight(); } }; } @Override public Bitmap getBitmap(String url) { return mCache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { mCache.put(url, bitmap); }}
RequestQueue mQueue = Volley.newRequestQueue(MainActivity.this);// 第一个参数就是RequestQueue对象,第二个参数是一个ImageCache对象 ImageLoader imageLoader = new ImageLoader(mQueue, new BitmapCache() ); ImageLoader.ImageListener listener = ImageLoader.getImageListener(imageView, R.drawable.abc_btn_default_mtrl_shape, R.drawable.abc_btn_check_material); imageLoader.get("http://img.my.csdn.net/uploads/201404/13/1397393290_5765.jpeg", listener,200,200);
5. NetworkImageView的用法
创建一个RequestQueue对象。
创建一个ImageLoader对象。
在布局文件中添加一个NetworkImageView控件。
在代码中获取该控件的实例。
设置要加载的图片地址。
第一第二步和ImageLoader的用法是完全一样的,因此这里我们就从第三步开始学习了。首先修改布局文件中的代码,在里面加入NetworkImageView控件,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Send Request" /> <com.android.volley.toolbox.NetworkImageView android:id="@+id/network_image_view" android:layout_width="200dp" android:layout_height="200dp" android:layout_gravity="center_horizontal" /> </LinearLayout>
接着在Activity获取到这个控件的实例
networkImageView = (NetworkImageView) findViewById(R.id.network_image_view);
得到了NetworkImageView控件的实例之后,我们可以调用它的setDefaultImageResId()方法、setErrorImageResId()方法和setImageUrl()方法来分别设置加载中显示的图片,加载失败时显示的图片,以及目标图片的URL地址,如下所示:
networkImageView.setDefaultImageResId(R.drawable.default_image); networkImageView.setErrorImageResId(R.drawable.failed_image); networkImageView.setImageUrl("http://img.my.csdn.net/uploads/201404/13/1397393290_5765.jpeg", imageLoader);
- Android Volley的基本用法
- Android Volley的基本用法
- Android Volley的基本用法
- Android Volley的基本用法
- Android Volley 基本用法
- Android开发初识Volley的基本用法
- Android Volley的基本用法(一)
- Android-Volley-联网的基本用法
- Android-Volley-联网的基本用法2
- Android-Volley-联网的基本用法3
- Android Volley框架的基本用法
- Android Volley完全解析(一),初识Volley的基本用法
- Android Volley完全解析(一),初识Volley的基本用法
- Android Volley完全解析(一),初识Volley的基本用法
- Android Volley完全解析(一),初识Volley的基本用法
- Android Volley完全解析(一),初识Volley的基本用法
- Android Volley完全解析(一),初识Volley的基本用法
- Android Volley完全解析(一),初识Volley的基本用法
- 深度解析C++模版
- 6月风怒(2)
- MYSQL + MHA +keepalive + VIP安装配置(三)--keepalived安装配置
- 串口传输文件 lrzsz
- JAVA操作FTP进行上传删除等操作
- Android Volley的基本用法
- redhat下httpd的安装
- Core Animation 官方文档第五章(高级动画技巧)
- hadoop单机模式读取sequence文件
- 数据库事务并发:概述
- Algorithms—34.Search for a Range
- ISO8583报文工具类
- 手掌中的设备改变人们的生活方式
- eclipse svn 插件安装