volley 之GsonRequest
这是之前写的http://www.cnblogs.com/freexiaoyu/p/3955137.html
关于GsonReques的用户,这个在POST请求传参数的时候GsonRequest构造第四个参数(POST请求参数)的时候接收不到参数原因是原来的类没有重写一个写法
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return params;
}
用原来的方法想要实现POST参数请求只能在Response.ErrorListener后面重写getParams,下面请求方法中构造为null的就是传递params
- GsonRequest<ResultModel> gsonRequest=new GsonRequest<ResultModel>
- (Request.Method.POST, AppConfig.APIURL, ResultModel.class, null, new Response.Listener<ResultModel>() {
- @Override
- public void onResponse(ResultModel response) {
- VolleyLog.e("Error: %s", "成功"+ response);
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- VolleyLog.e("Error: %s", "失败"+ error);
- }
- }){
- @Override
- protected Map<String, String> getParams()
- throws AuthFailureError {
- Map<String, String> params = new HashMap<String, String>();
- //Post参数
- return params;
- }};
- requestQueue.add(gsonRequest);
下面是一个完成的类
- import java.io.UnsupportedEncodingException;
- import java.util.Map;
- import com.android.volley.AuthFailureError;
- import com.android.volley.NetworkResponse;
- import com.android.volley.ParseError;
- import com.android.volley.Request;
- import com.android.volley.Response;
- import com.android.volley.Response.ErrorListener;
- import com.android.volley.Response.Listener;
- import com.android.volley.toolbox.HttpHeaderParser;
- import com.google.gson.Gson;
- import com.google.gson.JsonSyntaxException;
- public class GsonRequest<T> extends Request<T> {
- private Gson mGson = new Gson();
- private Class<T> clazz;
- private Map<String, String> headers;
- private Map<String, String> params;
- private Listener<T> listener;
- /**
- * Make a GET request and return a parsed object from JSON.
- *
- * @param url URL of the request to make
- * @param clazz Relevant class object, for Gson's reflection
- */
- public GsonRequest(int method,
- String url,
- Class<T> clazz,
- Listener<T> listener,
- ErrorListener errorListener) {
- super(method, url, errorListener);
- this.clazz = clazz;
- this.listener = listener;
- mGson = new Gson();
- }
- /**
- * Make a POST request and return a parsed object from JSON.
- *
- * @param url URL of the request to make
- * @param clazz Relevant class object, for Gson's reflection
- */
- public GsonRequest(int method,
- String url,
- Class<T> clazz,
- Map<String, String> params,
- Listener<T> listener,
- ErrorListener errorListener) {
- super(method, url, errorListener);
- this.clazz = clazz;
- this.params = params;
- this.listener = listener;
- this.headers = null;
- mGson = new Gson();
- }
- @Override
- public Map<String, String> getHeaders() throws AuthFailureError {
- return headers != null ? headers : super.getHeaders();
- }
- @Override
- protected Map<String, String> getParams() throws AuthFailureError {
- return params;
- }
- @Override
- protected void deliverResponse(T response) {
- listener.onResponse(response);
- }
- @Override
- protected Response<T> parseNetworkResponse(NetworkResponse response) {
- try {
- String json = new String(
- response.data, HttpHeaderParser.parseCharset(response.headers));
- return Response.success(
- mGson.fromJson(json, clazz), HttpHeaderParser.parseCacheHeaders(response));
- } catch (UnsupportedEncodingException e) {
- return Response.error(new ParseError(e));
- } catch (JsonSyntaxException e) {
- return Response.error(new ParseError(e));
- }
- }
- }
volley 之GsonRequest的更多相关文章
- Gson整合Volley返回对象--GsonRequest
Gson是一个使用映射支持JSON与Java对象之间相互转换的库文件.你可以定义和JSON keys相对应名称的Java对象.把对象传递给传递Gson,然后Gson会帮你为对象填充字段值. 下面是一个 ...
- 【第四篇】Volley修改之GsonRequest
json解析工具类的引入,这里引用lite马天宇的解析json的工具类: public class GsonImpl extends Json { private Gson gson = new Gs ...
- 基于Volley,Gson封装支持JWT无状态安全验证和数据防篡改的GsonRequest网络请求类
这段时间做新的Android项目的client和和REST API通讯框架架构设计.使用了非常多新技术,终于的方案也相当简洁优雅.client仅仅须要传Java对象,server端返回json字符串, ...
- 快速Android开发系列网络篇之Volley
Volley是Google推出的一个网络请求库,已经被放到了Android源码中,地址在这里,先看使用方法 RequestQueue mRequestQueue = Volley.newRequest ...
- 8.3 网络通信 Volley
AsyncHttpClient,它把HTTP所有的通信细节全部封装在了内部,我们只需要简单调用几行代码就可以完成通信操作了. Universal-Image-Loader,它使得在界面上显示网络图片的 ...
- Android Volley入门到精通:定制自己的Request
经过前面两篇文章的学习,我们已经掌握了Volley各种Request的使用方法,包括StringRequest.JsonRequest.ImageRequest等.其中StringRequest用于请 ...
- Android 网络通信框架Volley简介
1.1. Volley引入的背景在以前,我们可能面临如下很多麻烦的问题. 比如以前从网上下载图片的步骤可能是这样的流程: 在ListAdapter#getView()里开始图像的读取. 通过Async ...
- Android Volley完全解析
1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进行H ...
- Android working with Volley
Volley是google官方推出的一个开源网络访问库,在项目中直接使用它,而不需要写一大堆的重复的代码; 项目主页: https://android.googlesource.com/platfor ...
随机推荐
- hdu4998 Rotate 计算几何
Noting is more interesting than rotation! Your little sister likes to rotate things. To put it easie ...
- ApplicationContext之getBean方法详解
转自:http://www.sohu.com/a/115194552_466964 我们知道可以通过ApplicationContext的getBean方法来获取Spring容器中已初始化的bean. ...
- Mybatis一(基础)
mybatis架构 1.mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper.xml文件即sql映射文件, ...
- DevExpress开发win8风格界面
由于近期在对项目软件界面进行优化,找到了一款效果挺炫的插件,DevExpress15.2,可以制作win8可以滑动图标那个界面的效果,不多说,先贴图: (你没看错,这是用C#winform实现的) 可 ...
- C语言打印100到200之间的素数
用C语言打印素数,我们首先要了素数的相关定义:只有1和它本身两个因数的自然数,也就是说除了1和它本身外,不能被其他自然数整除的数就称为素数. 例如:101只能被1 和101 整除:103只能被1 和1 ...
- MySQL管理实务处理
事物处理可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么全不执行. 事务:指一组sql语句 回退:指撤销指定的sql语句过程 提交:将未存储的sql语句结果写入数据库表 保留点 ...
- RTMP、RTSP、HTTP可用的地址
香港卫视: rtmp://live.hkstv.hk.lxdns.com/live/hks1 香港财经,rtmp://202.69.69.180:443/webcast/bshdlive-pc 韩国 ...
- MySQL 中 utf8 和 utf8mb4 的使用以及字符集相关(原文优秀,必读)
MySQL 在 5.5.3 之后 (查看版本:select version();) 增加了这个utf8mb4的编码,mb4 就是 most bytes 4 的意思,支持的字节数最大为 4,即专门用来兼 ...
- nginx下js文件修改后访问不更新问题解决
今天遇到一个问题,nginx下js修改后不更新,加版本号,刷新浏览器缓存都不行,重启服务器才行,修改后又不更新了而且加载的js文件会有乱码或者文件加载不全的问题. 解决办法:修改nginx.conf, ...
- ubuntu网络配置及端口名修改
一.网络配置文件 buntu系统进行网络配置有的时候用图形界面不起作用,这种情况下可以直接修改某些启动脚本或配置文件 Ubuntu系统进行网络配置涉及到几个配置文件1./etc/network/int ...