Android使用Volley请求网络
来源:互联网 发布:nba2k17麦迪身体数据 编辑:程序博客网 时间:2024/05/16 03:44
前面写过一篇关于Volley源码的分析,本次介绍Volley的使用方法,使用Volley真的不是什么难事,只是为了帮助入门的童鞋能够快速的使用,大神绕道即可!
一、准备
1、新建一个Android工程,并在AndroidManifest中添加权限<uses-permission android:name="android.permission.INTERNET" />
2、下载volley.jar文件,拷贝到工程目录下的libs文件夹中,此时Eclipse将自动把jar包添加到工程的library。部分不会自动添加貌似是lib文件夹,针对不自动加入到的,可以手动添加,操作图示如下:
选择Add to Build Path即可。
二、创建一个管理RequestQueue的管理器
RequestQueue为Volley业务处理的核心中转器,我们用户在使用的时候直接通过RequestQueue来使用就可以了。创建一个用于管理RequestQueue对象的类ResourceManager,代码如下:
public class RequestManager { private RequestQueue mRequestQueue; private PersistentCookieStore mCookieStore; public RequestManager(Context context) { mCookieStore = new PersistentCookieStore(context.getApplicationContext()); mCookieStore.removeAll(); OkHttpClient okHttpClient = new OkHttpClient(); okHttpClient.setCookieHandler(new CookieManager(mCookieStore, CookiePolicy.ACCEPT_ALL)); mRequestQueue = Volley.newRequestQueue(context, new OkHttpStack(okHttpClient)); start(); } private static RequestManager mInstance; public static RequestManager getInstance() { if (mInstance == null) { synchronized (RequestManager.class) { mInstance = new RequestManager(MyApplication.getApp()); } } return mInstance; } public void start() { mRequestQueue.start(); } public void stop() { mRequestQueue.stop(); } public void addRequest(Request<?> request) { addRequest(request, null); } public void addRequest(Request<?> request, RetryPolicy retryPolicy) { if (request == null) { return; } if (retryPolicy == null) { retryPolicy = RequestManager.newDefaultRetryPolicy(); } request.setRetryPolicy(retryPolicy); mRequestQueue.add(request); } public void cancelAll() { mRequestQueue.cancelAll(new RequestQueue.RequestFilter() { @Override public boolean apply(Request<?> request) { return true; } }); } public static DefaultRetryPolicy newDefaultRetryPolicy() { return new DefaultRetryPolicy(); } public static DefaultRetryPolicy newLongRetryPolicy() { return new DefaultRetryPolicy(1000 * 60, 1, 0); }}public class OkHttpStack extends HurlStack { private OkHttpClient okHttpClient; /** * Create a OkHttpStack with default OkHttpClient. */ public OkHttpStack() { this(new OkHttpClient()); } /** * Create a OkHttpStack with a custom OkHttpClient * * @param okHttpClient Custom OkHttpClient, NonNull */ public OkHttpStack(OkHttpClient okHttpClient) { this.okHttpClient = okHttpClient; } @Override protected HttpURLConnection createConnection(URL url) throws IOException { OkUrlFactory okUrlFactory = new OkUrlFactory(okHttpClient); HttpURLConnection urlConnection = okUrlFactory.open(url); urlConnection.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0"); return urlConnection; }}创建完这两个类之后,剩下的具体实现工作就交给Volley内部去实现了。要注意在创建RequestManager的时候,要开始启用RequestQueue.start,这样才能驱动内部工作。
三、使用
这里演示中网络上获取一张图片,首先要先准备好图片的URL,大体的思路是创建一个获取图片的请求,然后将请求添加到RequestQueue中,就这么简单
RawRequest rawRequest = new RawRequest(addr, new Response.Listener<byte[]>() { @Override public void onResponse(byte[] data) { synchronized (mResourceTask) { mResourceTask.remove(addr); } try { f.createNewFile(); FileOutputStream out = new FileOutputStream(f); out.write(data); out.close(); if (cb != null) cb.onSuccess(id, filePath); } catch (Exception e) { if (cb != null) cb.onError(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { LogUtil.loge("down load resource failed: " + addr); synchronized (mResourceTask) { mResourceTask.remove(addr); } if (cb != null) cb.onError(); } }); RequestManager.getInstance().addRequest(rawRequest);如果程序执行成功,将会回调onResponse方法,反之发生异常则回调Response.ErrorListener方法。将下载下的数据保存到文件中,通过Drawable.createFromPath(文件名)就可以获取到下载后的图片了。
1 0
- Android使用Volley请求网络
- Android网络请求框架Volley的使用
- Android网络请求框架:Volley简单使用
- Android使用Volley请求网络图片
- android网络请求Volley框架的使用
- Android 网络请求Volley的使用
- Android网络请求 ------ Volley的使用
- android 网络请求 volley
- Android网络请求Volley
- Android Volley使用之二:Volley请求网络图片
- 【Android网络请求】如何使用Volley发送POST请求
- 使用Android Volley网络请求框架请求数据步骤
- Android-Volley网络请求流程图
- Android网络请求框架 Volley
- 网络请求Volley篇【Android】
- Android网络请求框架Volley
- Android中的网络请求 Volley
- Android中网络请求 Volley
- 查看CentOS版本方法
- maven向本土仓库导入jar包(处理官网没有的jar包)
- Object-C系列-<present and dismiss>
- ArrayDeque利用数组建造的双向队列
- C语言数据结构之栈与队列的应用(2)
- Android使用Volley请求网络
- 快快快!27个提升效率的iOS开源库推荐
- 获取前一天Tomcat的异常日志
- 为AndroidStudio安装jd-intellij,反编译任意.jar .class
- Java下的Cookie和Session
- 一个公司的 CTO 究竟要做什么?
- java多线程基础
- HDOJ 5533 Dancing Stars on Me (判断点是否能组成正多边形)
- ios面试题