Android网络请求框架:Volley简单使用
16lz
2021-01-26
Volley框架:2013年Google I/O大会上,Volley发布了。Volley是Google官方布的用于Android 平台上的网络通信库,目的是使网络通信更快,更简单,更健壮。 gitthub开源地址:https://github.com/stormzhang/AndroidVolley
* 特点:
* 网络通信更快,更简单,更健壮
* Get,POST等常用网络请求及图像高效异步处理
* 可以对多个网络请求进行优先级排序,可以多级别取消请求操作
* 网络请求的缓存处理
* 可以和Activity生命周期互动
* 缺点:不适合大数据和流媒体数据传输的网络请求,如视屏下载,大文件下载等。
* 使用步骤:
* 1,建立请求队列
* 2,将请求添加到队列中
* 3,用GET或POST(传递参数)发送请求
* 4,在请求结果的回调中进行相应的逻辑处理
* ———————————–
* Volley请求提供了三种类型请求:
* StringRequest 返回数据类型:String,本文的例子就是以这个为例
* JsonObjectRequest 返回数据类型:JsonObject
* JsonArrayRequest 返回数据类型:JsonArray
/** * 定义全局的Application,在这里对Volley及android-async-http框架进行配置 * @description: * @date 2016-1-11 上午9:59:17 */public class GlobalApplication extends Application { /*Volley网络请求队列**/ public static RequestQueue mQueue; @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); mQueue=Volley.newRequestQueue(this);//初始化请求队列 } /*对外获取队列对象的方法**/ public static RequestQueue getVolleyQueue(){ return mQueue; }}
Activity中使用Volley的get与post进行网络请求:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //使用Volley的get请求 getByVolley(); //使用Volley的POST请求 postByVolley(); } private void postByVolley() { String url="http://apis.juhe.cn/mobile/get?";//用Post要把get请求后面的字段用参数的方式过去 StringRequest request=new StringRequest(Method.POST,url, new Listener<String>() { @Override public void onResponse(String response) {//请求成功返回的数据 Log.v("ldm", response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) {//请求失败的处理 Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_SHORT).show(); } }){ @SuppressWarnings("unchecked") @Override protected Map<String, String> getParams() throws AuthFailureError {//传递参数的方法 Map<String, String> param=new HashMap<>(); param.put("phone", "13429667914"); param.put("key", "xxxxxxxx"); return param; } }; request.setTag("post"); GlobalApplication.getVolleyQueue().add(request);//把请求添加到队列中 } private void getByVolley() { //网络请求的连接地址,xxxxxxxx指你在聚合api网站申请的对应的key值 String url="http://apis.juhe.cn/mobile/get?phone=13429667914&key=xxxxxxxx"; StringRequest request=new StringRequest(Method.GET,url, new Listener<String>() { @Override public void onResponse(String response) {//请求成功返回的数据 Log.v("ldm", response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) {//请求失败的处理 Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_SHORT).show(); } }); request.setTag("get"); GlobalApplication.getVolleyQueue().add(request);//把请求添加到队列中 } //在Activity的生命周期Onstop中取消tag为“get”对应请求 @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); GlobalApplication.getVolleyQueue().cancelAll("get"); }}
最后不要忘记在AndroidManifest.xml中配置网络权限 :
更多相关文章
- 使用x5cloud云平台来做网络彩讯-------------需要的权限(四)
- Android开发历程_12(Handler的使用)
- Android高效处理权限——EasyPermissions框架的使用
- Android之Handler与多线程
- 2020年中高级Android大厂面试秘籍,为你保驾护航,直通大厂
- AsyncHttpClient
- Android中ImageView使用网络图片资源的方法
- 如何刷新Android的ListView的UI界面
- Android(安卓)Volley 网络请求框架图