基于Android Volley的网络请求工具
基于Android Volley的网络请求工具。
一、说明
AndroidVolley,Android Volley核心库及扩展工程。
AndroidVolleySample,网络请求工具示例工程。
Release,jar包。直接下载
二、Volley基本处理流程:
1、应用初始化Volley。
2、Volley创建一个RequestQueue、NetworkDispatcher组及Network。
3、RequestQueue即一个Request队列,RequestQueue会创建一个ExecutorDelivery。
4、NetworkDispatcher实质是Thread,从RequestQueue中取Request,通过Network加以执行。
5、Network负责网络请求处理,具体过程交给HttpStack处理。
6、HttpStack分HttpURLConnection(SDK_INT>=9)与HttpClient与两种方式。
7、ExecutorDelivery负责处理请求结果,并与主线程进行交互。
8、Volley在上述2-7的基础上增加了Cache等附加处理环节。
三、网络请求工具
在AndroidVolley基础上扩展了com.android.http包,增加了ByteArrayRequest及RequestManager,方便字符数据类型(JSON/XML)的网络请求。
1.初始化RequestManager
public class VolleyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        RequestManager.getInstance().init(this);//初始化工具
    }
    @Override
    public void onTerminate() {
        super.onTerminate();
    }
}
2.使用RequestManager
public class MainActivity extends Activity {
    private LoadControler loadControler = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        testPost();
        testGet();
    }
    /**
     * POST请求测试
     */
    private void testPost() {
        loadControler = RequestManager.getInstance().post("http://allthelucky.ap01.aws.af.cm/memoServer", null, requestListener, 0);
    }
    /**
     * GET请求测试
     */
    private void testGet() {
        loadControler = RequestManager.getInstance().get("http://allthelucky.ap01.aws.af.cm/memoServer", requestListener, 1);
    }
    /**
     * 数据响应监听
     */
    private RequestListener requestListener = new RequestListener() {
        @Override
        public void onRequest() {
            System.out.println("onReqeust, start");
        }
        @Override
        public void onSuccess(String response, String url, int actionId) {
            System.out.println("actionId:"+actionId+", OnSucess!\n"+response);
        }
        @Override
        public void onError(String errorMsg, String url, int actionId) {
            System.out.println("actionId:"+actionId+", onError!\n"+errorMsg);
        }
    };
    @Override
    public void onBackPressed() {
        super.onBackPressed();
        loadControler.cancel();
    }
}
http://git.oschina.net/winfirm/android-volley-manager
基于Android Volley的网络请求工具的更多相关文章
- 基于AFNetworking封装的网络请求工具类【原创】
		今天给大家共享一个我自己封装的网络请求类,希望能帮助到大家. 前提,导入AFNetworking框架, 关于修改AFN源码:通常序列化时做对text/plan等的支持时,可以一劳永逸的修改源代码,在a ... 
- (转载)Android之三种网络请求解析数据(最佳案例)
		[置顶] Android之三种网络请求解析数据(最佳案例) 2016-07-25 18:02 4725人阅读 评论(0) 收藏 举报 分类: Gson.Gson解析(1) 版权声明:本文为博主原创 ... 
- 网络请求工具 cURL
		网络请求工具 cURL 2017-08-16 cRUL 是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在“标准输出”(stdout)上面. 查看网页源码 1 $ curl baidu. ... 
- 【Android】Volley做网络请求的几种用法
		前言: 最近在将自己写的烂代码重构,以前使用的网络请求全是基于apache的HttpClient,简单使用还好,使用多了发现重复代码太多,而且每次使用都很繁琐,因此在网上找了半天网络请求的相关类库,最 ... 
- Android之三种网络请求解析数据(最佳案例)
		AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ... 
- [转]Android各大网络请求库的比较及实战
		自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection ... 
- Android 几种网络请求的区别与联系
		HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConne ... 
- Android 各大网络请求库的比较及实战
		自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection ... 
- nginx android app 慢网络请求超时
		最近遇到了android 在慢网络下面请求服务器报 java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by ... 
随机推荐
- 使用NPOI插件读取excel模版修改数据后保存到新目录新文件中
			添加引用: using System.IO; using NPOI.XSSF.UserModel; using NPOI.SS.UserModel; using NPOI.HSSF.UserModel ... 
- .net中XML的创建01(传统方法)
			XML传统的创建: 传统的创建主要是依据XmlDocument的对象展开的,通过XmlDocument对象可以创建元素(XmlElement).属性(XmlAttribute)以及文本节点(Creat ... 
- gdb调试 使用心得
			1: 对于在应用程序中加入参数进行调试的方法: 直接用 gdb app -p1 -p2 这样进行调试是不行的. 需要像以下这样使用: #gdb app (gdb) r -p1 -p ... 
- Phalcon 的 bootstrap.php 自动加载完成;非常人性化的设计
			<?php /** * Bootstraps the application */ use Phalcon\DI\FactoryDefault as PhDi, Phalcon\Config a ... 
- 关于PHP参数的引用传递和值传递
			如果希望编写一个名为increment()的函数来增加一个变量的值,我们可能会按如下方式编写这个函数: 这段代码是没有用的.下面测试代码的输出结果是“10”. $value 的内容没有被修改.这要归因 ... 
- HTML5做手机站页面字体显示很小的解决方法
			HTML5做手机站需要加上一部分代码,不然字体会显示很小的,经历了很久的不解才发现的,希望给大家一些帮助 <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD ... 
- HDU 1005(周期问题)
			HDU 1005 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descript ... 
- Dapper中使用存储分页。
			#region 分页获取数据 /// <summary> /// 分页获取数据 /// </summary> /// <typeparam name="T&qu ... 
- mongodb教程二
			MongoDB 创建数据库: MongoDB 创建数据库的语法格式如下: use DATABASE_NAME 如果数据库不存在,则创建数据库,否则切换到指定数据库. 如果你想查看所有数据库,可以使用 ... 
- zend framework 1 连接oracle数据库的写法
			1 用Zend_Db_Adapter_Pdo_Oci方式 $config =array( 'host'=>'192.168.5.40', 'port'=>'1521', 'dbname'= ... 
