Android Volley简单使用

Volley 是一个可让 Android 应用更轻松、(最重要的是)更快捷地联网的 HTTP 库

一、Get型请求

1.创建网络请求队列

RequestQueue  queue = Volley.newRequestQueue(thisContext);

2.设置 RequestQueue

String UrlLogin = "......";//请求url
StringRequest stringRequest = new StringRequest(
	Request.Method.GET, UrlLogin, new Response.Listener < String > () {
	@Override public void onResponse(String response) {
		/**
		**	成功后操作
		**/
	}
},
new Response.ErrorListener() {
@Override public void onErrorResponse(VolleyError error) {
		Log.d(TAG, error.getMessage());
		/**
		**	失败后操作
		**/
	}
}) ;

3.将请求加入请求队列

queue.add(stringRequest);

二、Post型请求

1.创建网络请求队列

RequestQueue  queue = Volley.newRequestQueue(thisContext);

2.设置 RequestQueue

String UrlLogin = "......";//请求url
StringRequest stringRequest = new StringRequest(
	Request.Method.POST, UrlLogin, new Response.Listener < String > () {
	@Override public void onResponse(String response) {//成功后操作
		/**
		**	成功后操作
		**/
	}
},
new Response.ErrorListener() {
@Override public void onErrorResponse(VolleyError error) {
		//失败后操作
		Log.d(TAG, error.getMessage());
	}
}) {
@Override protected Map < String,String > getParams() throws AuthFailureError {
//设置POST请求时,需向服务器传传递的数据
		Map < String,String > map = new HashMap < >();
		map.put("is_ajax", "1");
		map.put("data[username]", username);
		map.put("data[password]", password);
		return map;
}@Override public Map < String,String > getHeaders() throws AuthFailureError {
//设置请求头headers
		Map < String,String > headers = new HashMap < >();
		headers.put("Content-Type", "application/x-www-form-urlencoded");
		return headers;
	}
};

3.将请求加入请求队列

queue.add(stringRequest);

三、通过图片url请求图片资源

1.创建网络请求队列

RequestQueue  queue = Volley.newRequestQueue(thisContext);
String imageUrl= "";//请求url
RequestQueue mQueue = Volley.newRequestQueue(thisContext);
	ImageRequest imageRequest = new ImageRequest(
	imageUrl,
	 new Response.Listener<Bitmap>() {
	@Override 
	public void onResponse(Bitmap response) {
		imageHead.setImageBitmap(response);
	}}, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
	@Override
	public void onErrorResponse(VolleyError error) {
		imageHead.setImageResource(R.drawable.no_image_head);
	}
});
 mQueue.add(imageRequest);

3.将请求加入请求队列

 mQueue.add(imageRequest);

四、封装成MyApplication

一般一个手机app一个网络请求队列,然后放入Application,全局、全生命周期调用

public class MyApplication extends Application {
    //ImageLoader显示图片过程中的参数
    private static DisplayImageOptions mLoaderOptions;
    //Volley网络请求的队列对象
    private static RequestQueue mQueue;


    @Override
    public void onCreate() {
        super.onCreate();
        //初始化ImageLoader
        initImageLoader(getApplicationContext());
        //初始化Volley的队列对象
        mQueue = Volley.newRequestQueue(getApplicationContext());
        Log.v("volley","初始化Volley的队列对象");
    }

    public static void initImageLoader(Context context) {
        //初始化一个ImageLoaderConfiguration配置对象
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.
                Builder(context).
                memoryCacheExtraOptions(480, 800). // max width, max height,即保存的每个缓存文件的最大长宽
                denyCacheImageMultipleSizesInMemory().
                threadPriority(Thread.NORM_PRIORITY - 2).
                diskCacheFileNameGenerator(new Md5FileNameGenerator()).
                tasksProcessingOrder(QueueProcessingType.FIFO).
                build();
        //用ImageLoaderConfiguration配置对象完成ImageLoader的初始化,单例
        ImageLoader.getInstance().init(config);

        //显示图片过程中的参数
        mLoaderOptions = new DisplayImageOptions.Builder().
                showImageOnLoading(R.drawable.no_image).//正加载,显示no_image
                showImageOnFail(R.drawable.no_image).//加载失败时
                showImageForEmptyUri(R.drawable.no_image).//加载的Uri为空
                imageScaleType(ImageScaleType.EXACTLY_STRETCHED).
                cacheInMemory(true).//是否进行缓冲
                cacheOnDisk(true).
                considerExifParams(true).
                build();
    }
    
    public static RequestQueue getHttpQueue() {
        return mQueue;
    }

    public static DisplayImageOptions getLoaderOptions() {
        return mLoaderOptions;
    }
    //Volley请求,传入消息编号Tag。将request请求放入队列中缓存
    public static void addRequest(Request request, Object tag) {
        request.setTag(tag);
        request.setRetryPolicy(new DefaultRetryPolicy(10000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        Log.v("volley","传入消息编号Tag。将request请求放入队列中缓存");
        mQueue.add(request);
    }
    // 通过消息编号在队列中删除请求
    public static void removeRequest(Object tag) {
        mQueue.cancelAll(tag);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值