Volley的基本用法

1. Volley简介

我们平时在开发Android应用的时候都需要用到网络技术,而多数情况下都会使用Android系统中自带的网络加载HttpURLConnection   和HttpClient,几乎在任何项目的代码中我们都能看到这两个类的身影,使用率非常高,特别是HttpURLConnection。

不过HttpURLConnection和HttpClient的用法还是稍微有些复杂的,如果不进行适当封装的话,很容易就会写出不少重复代码。于是乎,一些Android网络通信框架也就应运而生,比如说AsyncHttpClient,Volley等等。

VolleyGoogle公司在2013年 I/O大会上推出了一个新的网络通信框架。Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕

2.Volley的用法

首先需要去 github 网站上去下载 volley 的 jar包,然后 把jar包复制到你的项目libs文件下,


                      


StringRequest的用法


首先需要获取到一个RequestQueue对象,可以调用如下方法获取到

代码如下
package com.example.openproject.app;

import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;

import android.app.Application;
import android.content.Context;

public class MyApplication extends Application{
	
	public static <span style="background-color: rgb(255, 0, 0);">RequestQueue</span> queue;//请求队列对象
	
	public static RequestQueue getRequestQueue(Context context){
		
		if(queue==null){
			queue=Volley.newRequestQueue(context);
		}
		
		return queue;
	
	}
	
}
注意这里拿到的RequestQueue是一个请求队列对象,它可以缓存所有的HTTP请求,然后按照一定的算法并发地发出这些请求。RequestQueue内部的设计就是非常合适高并发的,因此我们不必为每一次HTTP请求都创建一个RequestQueue对象,这是非常浪费资源的,基本上在每一个需要和网络交互的Activity中创建一个RequestQueue对象就足够了。

由于我们要多次联网请求数据,为了省事,所以我把 StringRequest给封装成了一个工具类

package com.example.openproject.utils;

import java.util.HashMap;
import java.util.Map;

import android.content.Context;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.example.openproject.app.MyApplication;
import com.example.openproject.bean.Volley_Huidiao;

public class MyVolley {
	
	//get请求
	public static void getVolley(String path,final Volley_Huidiao huidiao,Context context){
		
		
		StringRequest request = new StringRequest(Request.Method.GET,path, new Response.Listener<String>() {

			@Override//联网成功
			public void onResponse(String response) {
				
				huidiao.getData(response);
				
				
			}
		},new Response.ErrorListener() {
			
			//联网失败

			@Override
			public void onErrorResponse(VolleyError error) {
				
			}
		});
		request.setTag("get");
		MyApplication.getRequestQueue(context).add(request);
		
		
		
	}
	
	//post请求
	public static void postVolley(String path,final Volley_Huidiao huidiao,Context context,final HashMap<String, String> myMap){
		
		StringRequest stringRequest = new StringRequest(Request.Method.POST, path, new Response.Listener<String>() {

			@Override
			public void onResponse(String response) {
				//联网成功
				huidiao.getData(response);
				
			}
		}, new Response.ErrorListener() {

			@Override
			public void onErrorResponse(VolleyError error) {
				//联网失败
				
			}
			
		}){
			@Override
			protected Map<String, String> getParams() throws AuthFailureError {
				// TODO Auto-generated method stub
				return myMap;
			}
			
			
		};
		
		stringRequest.setTag("post");
		MyApplication.getRequestQueue(context).add(stringRequest);
		
		
		
		
		
		
		
	}
	
	
	
	

}

</pre><p></p><pre>
给设置一个接口类  Volley_Huidiao

package com.example.openproject.bean;

public interface Volley_Huidiao {
	
	void getData(String data);

}

在MainActivity中调用

	
		MyVolley.getVolley(str, new Volley_Huidiao() {  //  str代表网址  Volley_Huidiao 是你写的接口
			
			@Override
			public void getData(String data) {
			
				
			//data 就是你需要解析的json字符串	
				
			}
		}, 上下文);
		

另外,由于Volley是要访问网络的,因此不要忘记在你的AndroidManifest.xml中添加如下权限:

<uses-permission android:name="android.permission.INTERNET" /> 


以上就是StringRequest的用法











jar是的上







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值