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_SN_详解沙河(转载)
一 查看沙盒结构 和一些百度来的博客显示隐藏稳文件的方式不同,本文也提供两种方式,简单粗暴. 方式一 使用工具simpholders(推荐) 下载链接 http://simpholders.com/ ...
- delete语句与reference约束 FK_subplan_job_id冲突问题,导致job无法删除解决办法
在SQL Server 2008上删除已运行维护计划后,维护计划job没有自动删除掉,手工再删除维护计划job,提示删除失败. 错误现象:delete 语句与 reference 约束"F ...
- HSSFClientAnchor(int dx1,int dy1,int dx2,int dy2,short col1,int row1,short col2, int row2)
public HSSFClientAnchor(int dx1, int dy1, int dx2, int dy2, short col1, int row1, short col2, int ...
- POJ1636 动态规划+并查集
POJ1636 问题重述: 两个监狱中各有m个囚犯,欲对这两个监狱中的囚犯进行等数量的交换.已知某些囚犯不能关押在同一个监狱,求解可以交换人数的最大值k (k < m/2). 分析: 假设监狱1 ...
- [php] PHP创建指定目录和文件
前几天看到有人问PHP环境下如何创建文件到指定目录下,正好自己最近在学习,经过一翻测试,终于出结果了,贴出来与大家分享. 目录结构: 代码所在的文件wwwroot/mydir/test/test.ph ...
- iframe和response.sendRedirect使用的问题
一.iframe下使用response.sendRedirect的问题 一般使用filter过滤用户是否登录,如果用户没有登陆则转向登陆页面,这时候可以使用response.sendRedirect( ...
- Android新建项目手动添加Layout布局
前言: 这是看<第一行代码>学习到的第一章,之前使用Eclipse创建Android项目都是自动生成MainActivity.java文件和layout文件夹下的activity_main ...
- [Codeforces Round #192 (Div. 2)] D. Biridian Forest
D. Biridian Forest time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- php爬虫的两种思路
写php爬虫可能最大的问题就是php脚本执行时间的问题了,对于这个问题,我找到了两种解决方法. 第一种通过代码set_time_limit(0)或者ini_set("max_executio ...
- Could not open a connection to your authentication agent
执行ssh-add ~/.ssh/rsa 就会遇到上述错误了 解决方案: 先执行 eval `ssh-agent` (是-键上的那个`) 再执行 ssh-add ~/.ssh/rsa成功 ssh ...