Volley的三种基本用法StringRequest的Get和post用法以及JsonObjectRequest
首先做出整个应用的全局请求队列
 package com.qg.lizhanqi.myvolleydemo;
 import android.app.Application;
         import com.android.volley.RequestQueue;
         import com.android.volley.toolbox.HttpStack;
         import com.android.volley.toolbox.Volley;
 /**
  * Created by lizhanqi on 2016-7-27-0027.
  */
 /**
  * 这是一个本应用全局的Volley请求队列,所以这里继承了Application
  * 由于这是一个自定义的全局的application,所以在清单文件application中加入属性
  *   android:name=".MyApplication"
  */
 public class MyApplication extends Application {
     public static RequestQueue queues;
     @Override
     public void onCreate() {
         super.onCreate();
         //实例化全局的请求队列
         queues = Volley.newRequestQueue(getApplicationContext(), (HttpStack) null);
     }
     public static RequestQueue getHttpQueues() {
         return queues;
     }
 }
然后是StringRequest的GET请求方式
     private void volleyGetStringMonth(String url) {
          /**
          *  StringRequest(int method, String url, Listener<String> listener, ErrorListener errorListener)
          *   method请求方法 url请求路径,Listener请求成功的监听的回调,ErrorListener请求失败的监听回调
          */
         StringRequest sr = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
             @Override
             public void onResponse(String s) {
                 Log.i(TAG, "onResponse: 成功了");
                 Toast.makeText(MainActivity.this, "请求成功volleyGetStringMonth" + s, Toast.LENGTH_SHORT).show();
             }
         }, new Response.ErrorListener() {
             @Override
             public void onErrorResponse(VolleyError volleyError) {
                 Log.i(TAG, "onErrorResponse: 失败了");
             }
         });
         //设置请求标签用于加入全局队列后,方便找到
         sr.setTag("stringquest");
         //添加到全局的请求队列
         MyApplication.getHttpQueues().add(sr);
     }
接着是StringRequest的POST请求方式的使用
     private void volleyPostStringMonth(String url) {
         StringRequest postsr = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
             @Override
             public void onResponse(String s) {
                 Log.i(TAG, "onResponse: 成功了");
                 Toast.makeText(MainActivity.this, "volleyPostStringMonth请求成功:" + s, Toast.LENGTH_SHORT).show();
             }
         }, new Response.ErrorListener() {
             @Override
             public void onErrorResponse(VolleyError volleyError) {
                 Log.i(TAG, "onErrorResponse: 失败了");
             }
         }) {
             @Override
             protected Map<String, String> getParams() throws AuthFailureError {
                 //创建一个集合,放的是keyvalue的key是参数名与value是参数值
                 Map<String, String> map = new HashMap<String, String>();
                 map.put("type", "news");
                 map.put("nums", "20");
                 return map;
             }
         };
         //设置请求标签用于加入全局队列后,方便找到
         postsr.setTag("postsr");
         //添加到全局的请求队列
         MyApplication.getHttpQueues().add(postsr);
     }
最后是JsonObjectRequest的简单使用
         private void volleyGetJsonMonth(String url) {
             /*
             * JsonObjectRequest(int method, String url, JSONObject jsonRequest, Listener<JSONObject> listener, ErrorListener errorListener)
             method 请求方式
             url请求路径
              */
             JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
                 @Override
                 public void onResponse(JSONObject jsonObject) {
                     Log.i(TAG, "onResponse: JsonObjectRequest成功了");
                     Toast.makeText(MainActivity.this, "volleyGetJsonMonth请求成功:" + jsonObject, Toast.LENGTH_SHORT).show();
                 }
             }, new Response.ErrorListener() {
                 @Override
                 public void onErrorResponse(VolleyError volleyError) {
                     Log.i(TAG, "onErrorResponse: JsonObjectRequest失败了");
                 }
             });
             jsonObjectRequest.setTag("jsonObjectRequest");
             MyApplication.getHttpQueues().add(jsonObjectRequest);
         }
然后我们还可以重写onstop不可见后就取消请求
@Override
protected void onStop() {
MyApplication.getHttpQueues().cancelAll("stringquest");
MyApplication.getHttpQueues().cancelAll("jsonObjectRequest");
MyApplication.getHttpQueues().cancelAll("postsr");
super.onStop();
}
Volley的三种基本用法StringRequest的Get和post用法以及JsonObjectRequest的更多相关文章
- java 创建线程的三种方法Callable,Runnable,Thread比较及用法
		转自:http://www.chinaitlab.com/Java/line/942440.html 编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互.一般有三种方法,Thread, ... 
- using 的三种用法
		using 有哪三种用法? 1)引入命名空间. 2)给命名空间或者类型起别名. 3)划定作用域.自动释放资源,使用该方法的类型必须实现了 System.IDisposable接口,当对象脱离作用域之后 ... 
- Js闭包常见三种用法
		Js闭包特性源于内部函数可以将外部函数的活动对象保存在自己的作用域链上,所以使内部函数的可以将外部函数的活动对象占为己有,可以在外部函数销毁时依然存有外部函数内的活动对象内容,这样做的好处是可 ... 
- .NET(c#)new关键字的三种用法
		前几天去家公司面试,有一道这样的题:写出c#中new关键字的三种用法,思前想后挖空心思也只想出了两种用法,回来查了下msdn,还真是有第三种用法:用于在泛型声明中约束可能用作类型参数的参数的类型,这是 ... 
- SQL、LINQ、Lambda 三种用法(转)
		SQL.LINQ.Lambda 三种用法颜色注释: SQL LinqToSql Lambda QA1. 查询Student表中的所有记录的Sname.Ssex和Class列.select sname, ... 
- 【转】javascript入门系列演示·三种弹出对话框的用法实例
		对话框有三种 1:只是提醒,不能对脚本产生任何改变: 2:一般用于确认,返回 true 或者 false ,所以可以轻松用于 if...else...判断 3: 一个带输入的对话框,可以返回用户填入的 ... 
- 【JSP】三种弹出对话框的用法实例
		对话框有三种 1:只是提醒,不能对脚本产生任何改变: 2:一般用于确认,返回 true 或者 false ,所以可以轻松用于 if...else...判断 3: 一个带输入的对话框,可以返回用户填入的 ... 
- NEW关键字的三种用法
		最近面试中有一道题是写new关键字的几种用法,想了下写下我知道的两种用法 第一种 创建对象.调用构造函数,这就不用讲了 ClassA A=new ClassA(); 第二种 是作为修饰符,显示隐藏继 ... 
- c# new关键字的三种用法
		三种用法如下: 在 C# 中,new 关键字可用作运算符.修饰符或约束. 1)new 运算符:用于创建对象和调用构造函数. 2)new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成 ... 
随机推荐
- iOS的触摸事件
			在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件,我们称其为@''响应者对象''UIApplication,UIViewController,UIView都 ... 
- HDU 5044 离线LCA算法
			昨天写了HDU 3966 ,本来这道题是很好解得,结果我想用离线LCA 耍一把,结果发现离线LCA 没理解透,错了好多遍,终得AC ,这题比起 HDU 3966要简单,因为他不用动态查询.但是我还是错 ... 
- CentOS和Ubuntu的区别
			CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代 ... 
- 关于css伪类:hover的用法
			关于伪类:hover大家都用过,也比较熟悉.今天介绍一种新的用法(不是我发现的,但是以前一直没这么用过).在Chrome浏览器下,当a标签使用display:black;时a:hover的属性浏览器就 ... 
- PHP内置Web Server探究(一)启动Cli_Server
			自PHP5.4之后 PHP内置了一个Web 服务器(cli_server),类似于Python的内置server一样,方便我们开发阶段的调试 主要使用场景: 1,没有搭建nginx或apache等第三 ... 
- [CSAPP]并发与并行
			学了这么久的计算机,并发与并行的概念理解的一直不够透彻.考研复习那会儿,以为自己懂了,然而直到看了CSAPP才算是真正明白了这俩个概念. 并发(concurrency) 流X和流Y并发运行是指,流X在 ... 
- Effective Java2读书笔记-对于所有对象都通用的方法(一)
			第8条:覆盖equals时请遵守通用约定 ①约定的内容 自反性.对于任何非null的引用值x.x.equals(x)必须返回true. 对称性.对于任何非null的引用值x和y.当且仅当y.equal ... 
- php平台移植windows和linux
			2015/1/14 今天项目中遇到一个问题,在本地运行没有问题,挂到服务器上,就运行错误.过程中比较粗心,知道导致这样的原因,居然小时漏掉了一些细节. 比如,在php中通过声明__autoload() ... 
- UIAutomator 学习版
			1.要写UIAutomator的testcase,首先要用Eclipse创建一个Java Project 需要将Junit 的lib加入到工程里 2.添加android.jar和uiautomator ... 
- LeetCode_Flatten Binary Tree to Linked List
			Given a binary tree, flatten it to a linked list in-place. For example, Given 1 / \ 2 5 / \ \ 3 4 6 ... 
