Android框架Volley

1.Volley框架使用基本上一样的顺序(三步走):(不需要考了创建新线程的问题)

访问网络别忘了添加权限:<uses-permission android:name="android.permission.INTERNET"/>

(1).创建:RequestQueue requestQueue= Volley.newRequestQueue(this);

(2.1.1)当使用StringRequest时  

  

StringRequest stringRequest=new StringRequest(url,new Response.Listener(){},new Response.ErrorListener(){}){

public Map<String, String> getHeaders() throws AuthFailureError {

HashMap map=new HashMap();

    map.put("apikey ","你自己的apikey");

    return map;

}

};

当用于接收JSON数据时,在url出写接口(如:

http://apis.baidu.com/heweather/weather/free ? city=beijing)

通过getHeaders()函数传入apikey

在Listener 的 onResponse()函数中得到JSONString 的值。

(2.1.2)也可以通过 getParams()对Json的api参数值进行设置这时url的值就变了,并且参数多的第一个是请求方式:


StringRequest stringRequest=new StringRequest(url,new 

Response.Listener(){},new Response.ErrorListener(){}){

protected Map<String, String> getParams() throws AuthFailureError {

HashMap map=new HashMap();

    map.put("city","beijing"); //对应的apiStore的参数是什么就写什么

    return map;

}

public Map<String, String> getHeaders() throws AuthFailureError {

HashMap map=new HashMap();

    map.put("apikey ","你自己的apikey");

    return map;

}

};

(注意:getHeaders 、getParams()函数都是写在新代码区)



(2.2)JsonRequest的使用(两个直接子类:JsonObjectRequest和JsonArrayRequest)

JsonObjectRequest JsonObjectRequest=new JsonObjectRequest("http://apis.baidu.com/heweather/weather/free?city=beijing", new Response.Listener<JSONObject>() {},new Response.ErrorListener(){}){

public Map<String, String> getHeaders() throws AuthFailureError {

HashMap map=new HashMap();

    map.put("apikey ","af02a3e0e93ef6cbb85eada01a1c40ae");

    return map;

}

};





(在Response.Listener的onResponse()方法里通过textView2.setText(jsonObject.toString()); 得到JsonString)


在onErrorResponse中通过volleyError.getMessage()的到错误提示)

//使用JsonObjectRequest 需要注意:

/*使用JsonObjectRequest或继承自JsonObjectRequest类的对象提交post请求时,

如果有参数需要提交时必须一JsonObject的json串方式提交,否则通过getParams()方法的方式提交不管用

*/

(2.3)加载网络图片

//第一个URL图片的网址   第二个Listener  第三第四为最大宽和高,第五为图片质量Config.ARGB_8888四个字节,ARGB_565 ARGB_4444两个字节  第六个ErrorListener

 ImageRequest imageRequest=new ImageRequest("https://p.ssl.qhimg.com/t01df31145427f5ea2f.jpg", new Response.Listener<Bitmap>() {

@Override

    public void onResponse(Bitmap bitmap) {

imageView.setImageBitmap(bitmap);

    }

}, 0, 0, Bitmap.Config.ARGB_8888, new Response.ErrorListener() {

@Override

    public void onErrorResponse(VolleyError volleyError) {

}

});

(3)添加到 requestQueue中

 requestQueue.add(imageRequest);

// requestQueue.add(JsonObjectRequest);

// requestQueue.add(stringRequest);

二.Volley还提供了 NetworkImageView控件加载网络图片(四步走)

1.首先在布局文件中创建NetworkImageView

(含有 void类型的setImageUrl()、String getImageUrl()(得到传入的URL) 、void setDefaulImageId()(设置默认图片) 、SetErrorImageId()(设置当网络加载失败时显示的图片) 等函数)

1.创建RequestQueue对象

2.创建一个ImageLoader

3.在布局文件中添加一个NetWorkImageView控件

4.设置加载图片的网络地址和imageLoader


代码演示:

//首先定义出ImageLoader

ImageLoader imageLoader=new ImageLoader(requestQueue, new ImageLoader.ImageCache() {

@Override

    public Bitmap getBitmap(String s) {

return null;

    }

@Override

    public void putBitmap(String s, Bitmap bitmap) {

}

});

networkImageView.setDefaultImageResId(R.mipmap.ic_launcher);

networkImageView.setErrorImageResId(R.mipmap.ic_launcher);//加载失败显示图片

networkImageView.setImageUrl("https://p.ssl.qhimg.com/t01df31145427f5ea2f.jpg",imageLoader);

三.自定义Request

(用Gson解析数据)

参考项目: https://github.com/linyuanbin/Volley_kaiyuan

library-1.0.19.jar 就是这里Volley的jar包)

时间: 2024-12-20 17:41:39

Android框架Volley的相关文章

Android网络框架Volley

Volley是Google I/O 2013推出的网络通信库,在volley推出之前我们一般会选择比较成熟的第三方网络通信库,如: android-async-http retrofit okhttp 他们各有优劣,之前个人则比较喜欢用android-async-http, 如今Google推出了官方的针对Android平台上的网络通信库,能使网络通信更快,更简单,更健壮,Volley在提供了高性能网络通讯功能的同时,对网络图片加载也提供了良好的支持,完全可以满足简单REST客户端的需求, 我们

android中Volley框架问题

问题描述 android中Volley框架问题 话说为啥我的问题基本就没解决过的 郁闷,闲话不多说,项目中有用到与服务器交互,之前都是自己写的httpurlconnection来进行传送数据,因为服务端要接受的是一个压缩后的Json字符串,之前使用如下方法将参数写入. public static String httpPost(String urlAddress,String params){ URL url=null; HttpURLConnection conn=null; Buffered

Android 网络通信框架Volley简介(Google IO 2013)

Volley主页 https://android.googlesource.com/platform/frameworks/volley  http://www.youtube.com/watch?v=yhv8l9F44qo&feature=player_embedded 1. 什么是Volley 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,今年的G

Android中Volley框架进行请求网络数据的使用_Android

问题的阐述:Android SDK中的HttpClient和HttpUrlConnection两种请求方式用来处理网络的复杂的操作,但当应用比较复杂的时候需要我们编写大量的代码处理很多东西:图像缓存,请求的调度等等: 解决:Volley就是为解决这些而生,它与2013年Google I/O大会上被提出:使得Android应用网络操作更方便更快捷:抽象了底层Http Client等实现的细节,让开发者更专注与产生RESTful Request.另外,Volley在不同的线程上异步执行所有请求而避免

Android中Volley框架下保持会话方法_Android

公司经理把我拉出来,死马当活马医,做一个安卓app,作为刚毕业几个月且只是培训了几个月的小白来说,这无疑是一个非常大的挑战,当然最大的挑战不是这个,最大的挑战时两个周做出来.这是最蛋疼的,说实话,对于有两三年的开发经验的人来说,两个周开发一个项目很简单,说不定还有很多时间用来干别的. 于是一上来就把自己给难住了,登陆还是很好做的,只要验证返回的信息就可以跳转,但是在接下来后面的数据接口连接的时候各种报错,整了两天,查了很多信息,还接受了公司老人的嘲讽和谩骂终于做出来了. 这个是基于session

Android 网络请求框架Volley实例详解

Android 网络请求框架Volley实例详解 首先上效果图 Logcat日志信息on Reponse Volley特别适合数据量不大但是通信频繁的场景,像文件上传下载不适合! 首先第一步 用到的RequetQueue RequestQueue.Java RequestQueue请求队列首先得先说一下,ReuqestQueue是如何对请求进行管理的...RequestQueue是对所有的请求进行保存...然后通过自身的start()方法开启一个CacheDispatcher线程用于缓存调度,开

Android中Volley框架下保持会话方法

公司经理把我拉出来,死马当活马医,做一个安卓app,作为刚毕业几个月且只是培训了几个月的小白来说,这无疑是一个非常大的挑战,当然最大的挑战不是这个,最大的挑战时两个周做出来.这是最蛋疼的,说实话,对于有两三年的开发经验的人来说,两个周开发一个项目很简单,说不定还有很多时间用来干别的. 于是一上来就把自己给难住了,登陆还是很好做的,只要验证返回的信息就可以跳转,但是在接下来后面的数据接口连接的时候各种报错,整了两天,查了很多信息,还接受了公司老人的嘲讽和谩骂终于做出来了. 这个是基于session

Android中Volley框架进行请求网络数据的使用

问题的阐述:Android SDK中的HttpClient和HttpUrlConnection两种请求方式用来处理网络的复杂的操作,但当应用比较复杂的时候需要我们编写大量的代码处理很多东西:图像缓存,请求的调度等等: 解决:Volley就是为解决这些而生,它与2013年Google I/O大会上被提出:使得Android应用网络操作更方便更快捷:抽象了底层Http Client等实现的细节,让开发者更专注与产生RESTful Request.另外,Volley在不同的线程上异步执行所有请求而避免

Google官方网络框架Volley实战——QQ吉凶测试,南无阿弥陀佛!

Google官方网络框架Volley实战--QQ吉凶测试,南无阿弥陀佛! 这次我们用第三方的接口来做一个QQ吉凶的测试项目,代码依然是比较的简单 无图无真相 直接撸代码了,详细解释都已经写在注释里了 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools&