Android网络框架Volley的快速使用

一.基本使用

之前做Android开发都是使用学长自己封装好的网络请求框架,第三方网络框架也很多,网上搜索了一下,大多数人推荐使用

其中Volley是Google推出了官方的针对Android平台上的网络通信库,能非常简单地进行HTTP通信,并支持类似Universal-Image-Loader的网络图片加载。

下面举例说明下Volley的最基本Http请求方法,后台是Struct2 的action接口,方法名为login,参数为用户名和密码

private void testHttp(){
        //新建一个请求,参数为(请求方式,网络地址,请求成功回调,请求失败回调),如果有参数传递的话重写StringRequest的 Map<String, String> getParams()  方法
        StringRequest request = new StringRequest(Method.POST, "http://localhost:8080/app_login.action", new Response.Listener<String>(){
            
            @Override
            public void onResponse(String response) {
                // TODO Auto-generated method stub
                System.out.println("success:"+response);
            }
        }, new ErrorListener(){

            @Override
            public void onErrorResponse(VolleyError error) {
                // TODO Auto-generated method stub
                System.out.println("error:"+error);
            }
            
        }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                // TODO Auto-generated method stub
                Map<String, String> map = new HashMap<String, String>();  
                map.put("username", "123456");  
                map.put("password", "123456"); 
                return map;
            }
        };
        //最后获取到一个RequestQueue请求队列对象,它可以缓存所有的HTTP请求,然后按照一定的算法并发地发出这些请求,将request对象添加到RequestQueue里面,让RequestQueue智能的调用
        RequestQueue mQueue = Volley.newRequestQueue(getActivity());  
        mQueue.add(request); 
}

调用以上方式,打印出返回的Json结果,如图:



二.优化

在项目中,很多地方都需要用到网络请求和服务器进行数据交换,可以对Volley进行简单的封装:

1.新建一个BaseActivity类,继承Activity,添加如下方法:

    private static final String httpUrl = "http://localhost:8080/";
    protected static final String Login = "app_login.action";
    protected static final String Sign = "app_sign.action";
    protected static final String getWallet = "app_getWallet.action";
    
    public void asyHttp(String method,final Map<String,String> map,HttpCallBack callBack){
        this.httpCallBack = callBack;
        StringRequest request = new StringRequest(Method.POST, httpUrl+method, new Response.Listener<String>(){
            @Override
            public void onResponse(String response) {
                httpCallBack.Success(response);
                System.out.println("success:"+response);
            }
        }, new ErrorListener(){
            @Override
            public void onErrorResponse(VolleyError error) {
                httpCallBack.Fail(error.toString());
                System.out.println("error:"+error);
            }
            
        }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                return map;
            }
        };
        
        RequestQueue mQueue = Volley.newRequestQueue(getActivity());  
        mQueue.add(request); 
    }

其中定义了网络请求的地址,和所有需要用到的请求接口,asyHttp的参数为(方法名,参数,成功回调,失败回调)


2.在需要用到网络请求的Activity,继承BaseActivity,并调用asyHttp方法

	Map<String, String> map = new HashMap<String, String>();  
        map.put("username", "123456");  
	map.put("password", "123456"); 
        asyHttp(Login, map, new HttpCallBack(){

	    @Override
	    public void Success(String respose) {
		//成功之后的处理代码
	    }

	    @Override
	    public void Fail(String error) {
	        //失败之后的处理代码
	    }
	});




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值