首先做出整个应用的全局请求队列

 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的更多相关文章

  1. java 创建线程的三种方法Callable,Runnable,Thread比较及用法

    转自:http://www.chinaitlab.com/Java/line/942440.html 编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互.一般有三种方法,Thread, ...

  2. using 的三种用法

    using 有哪三种用法? 1)引入命名空间. 2)给命名空间或者类型起别名. 3)划定作用域.自动释放资源,使用该方法的类型必须实现了 System.IDisposable接口,当对象脱离作用域之后 ...

  3. Js闭包常见三种用法

        Js闭包特性源于内部函数可以将外部函数的活动对象保存在自己的作用域链上,所以使内部函数的可以将外部函数的活动对象占为己有,可以在外部函数销毁时依然存有外部函数内的活动对象内容,这样做的好处是可 ...

  4. .NET(c#)new关键字的三种用法

    前几天去家公司面试,有一道这样的题:写出c#中new关键字的三种用法,思前想后挖空心思也只想出了两种用法,回来查了下msdn,还真是有第三种用法:用于在泛型声明中约束可能用作类型参数的参数的类型,这是 ...

  5. SQL、LINQ、Lambda 三种用法(转)

    SQL.LINQ.Lambda 三种用法颜色注释: SQL LinqToSql Lambda QA1. 查询Student表中的所有记录的Sname.Ssex和Class列.select sname, ...

  6. 【转】javascript入门系列演示·三种弹出对话框的用法实例

    对话框有三种 1:只是提醒,不能对脚本产生任何改变: 2:一般用于确认,返回 true 或者 false ,所以可以轻松用于 if...else...判断 3: 一个带输入的对话框,可以返回用户填入的 ...

  7. 【JSP】三种弹出对话框的用法实例

    对话框有三种 1:只是提醒,不能对脚本产生任何改变: 2:一般用于确认,返回 true 或者 false ,所以可以轻松用于 if...else...判断 3: 一个带输入的对话框,可以返回用户填入的 ...

  8. NEW关键字的三种用法

    最近面试中有一道题是写new关键字的几种用法,想了下写下我知道的两种用法 第一种 创建对象.调用构造函数,这就不用讲了 ClassA  A=new ClassA(); 第二种 是作为修饰符,显示隐藏继 ...

  9. c# new关键字的三种用法

    三种用法如下: 在 C# 中,new 关键字可用作运算符.修饰符或约束. 1)new 运算符:用于创建对象和调用构造函数. 2)new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成 ...

随机推荐

  1. 点击<a>标签,禁止页面自动跳到顶部的解决办法

       最近在开发一个小web的时候想给一个按钮增加一个弹出dialog功能,但是发现点击按钮后页面总是自动滚动至顶部,这点从用户体验上来讲是极其不爽的,于是开始跳进google大池寻求解决办法.网上的 ...

  2. 开源项目Material Calendar View 学习记录 (一)

    开源项目Material Calendar View 学习记录 Github: https://github.com/prolificinteractive/material-calendarview ...

  3. Javascript实现表格行排序

    网站开发中凡是用到表格来展示数据的,往往都要根据某个列来对行排序,下面是我从书上看到的一个行排序例子,看过后受益匪浅,故分享出来. 直接献上完整代码: <!doctype html> &l ...

  4. 为什么要用Math.sqrt(i)方法

    java 练习题 判断 101-200 之间有多少个素数,并输出所有素数 public class Prime { public static int count = 0; public static ...

  5. Broadcom网卡linux系统下无法连接到网络问题(某种情况- -||)的解决办法

    国际惯例,先闲扯: 其实我是个电脑白痴,至于为什么一个电脑白痴会来做开发呢?原因非常匪夷所思且简单--“因为做开发看起来很酷!”,那为什么要一把年纪了才来做开发呢?原因更简单,“当我回过神,就发现我已 ...

  6. Asp.net mvc 3 file uploads using the fileapi

    Asp.net mvc 3 file uploads using the fileapi I was recently given the task of adding upload progress ...

  7. Jasper_dataSource_CSV data source config

    (1)    open eclipse Repository Explorer Window->Show View->Other-> Repository Explorer-> ...

  8. Android广播机制(转)

    1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...

  9. (转)syslog日志等级

    设施.优先级”(facility.priority)设施(facility): kern 0 内核日志消息 user 1 随机的用户日志消息 mail 2 邮件系统日志消息 daemon 3 系统守护 ...

  10. LeetCode_Subsets II

    Given a collection of integers that might contain duplicates, S, return all possible subsets. Note: ...