这是之前写的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

  1. GsonRequest<ResultModel> gsonRequest=new GsonRequest<ResultModel>
  2. (Request.Method.POST, AppConfig.APIURL, ResultModel.class, null, new Response.Listener<ResultModel>() {
  3.  
  4. @Override
  5. public void onResponse(ResultModel response) {
  6. VolleyLog.e("Error: %s", "成功"+ response);
  7. }
  8. }, new Response.ErrorListener() {
  9.  
  10. @Override
  11. public void onErrorResponse(VolleyError error) {
  12. VolleyLog.e("Error: %s", "失败"+ error);
  13. }
  14. }){
  15.  
  16. @Override
  17. protected Map<String, String> getParams()
  18. throws AuthFailureError {
  19. Map<String, String> params = new HashMap<String, String>();
  20. //Post参数
  21. return params;
  22. }};
  23. requestQueue.add(gsonRequest);

下面是一个完成的类

  1.  
  2. import java.io.UnsupportedEncodingException;
  3. import java.util.Map;
  4.  
  5. import com.android.volley.AuthFailureError;
  6. import com.android.volley.NetworkResponse;
  7. import com.android.volley.ParseError;
  8. import com.android.volley.Request;
  9. import com.android.volley.Response;
  10. import com.android.volley.Response.ErrorListener;
  11. import com.android.volley.Response.Listener;
  12. import com.android.volley.toolbox.HttpHeaderParser;
  13. import com.google.gson.Gson;
  14. import com.google.gson.JsonSyntaxException;
  15.  
  16. public class GsonRequest<T> extends Request<T> {
  17. private Gson mGson = new Gson();
  18. private Class<T> clazz;
  19. private Map<String, String> headers;
  20. private Map<String, String> params;
  21. private Listener<T> listener;
  22.  
  23. /**
  24. * Make a GET request and return a parsed object from JSON.
  25. *
  26. * @param url URL of the request to make
  27. * @param clazz Relevant class object, for Gson's reflection
  28. */
  29. public GsonRequest(int method,
  30. String url,
  31. Class<T> clazz,
  32. Listener<T> listener,
  33. ErrorListener errorListener) {
  34. super(method, url, errorListener);
  35. this.clazz = clazz;
  36. this.listener = listener;
  37. mGson = new Gson();
  38. }
  39.  
  40. /**
  41. * Make a POST request and return a parsed object from JSON.
  42. *
  43. * @param url URL of the request to make
  44. * @param clazz Relevant class object, for Gson's reflection
  45. */
  46. public GsonRequest(int method,
  47. String url,
  48. Class<T> clazz,
  49. Map<String, String> params,
  50. Listener<T> listener,
  51. ErrorListener errorListener) {
  52.  
  53. super(method, url, errorListener);
  54. this.clazz = clazz;
  55. this.params = params;
  56. this.listener = listener;
  57. this.headers = null;
  58. mGson = new Gson();
  59. }
  60.  
  61. @Override
  62. public Map<String, String> getHeaders() throws AuthFailureError {
  63. return headers != null ? headers : super.getHeaders();
  64. }
  65.  
  66. @Override
  67. protected Map<String, String> getParams() throws AuthFailureError {
  68. return params;
  69. }
  70.  
  71. @Override
  72. protected void deliverResponse(T response) {
  73. listener.onResponse(response);
  74. }
  75.  
  76. @Override
  77. protected Response<T> parseNetworkResponse(NetworkResponse response) {
  78. try {
  79. String json = new String(
  80. response.data, HttpHeaderParser.parseCharset(response.headers));
  81. return Response.success(
  82. mGson.fromJson(json, clazz), HttpHeaderParser.parseCacheHeaders(response));
  83. } catch (UnsupportedEncodingException e) {
  84. return Response.error(new ParseError(e));
  85. } catch (JsonSyntaxException e) {
  86. return Response.error(new ParseError(e));
  87. }
  88. }
  89. }

volley 之GsonRequest的更多相关文章

  1. Gson整合Volley返回对象--GsonRequest

    Gson是一个使用映射支持JSON与Java对象之间相互转换的库文件.你可以定义和JSON keys相对应名称的Java对象.把对象传递给传递Gson,然后Gson会帮你为对象填充字段值. 下面是一个 ...

  2. 【第四篇】Volley修改之GsonRequest

    json解析工具类的引入,这里引用lite马天宇的解析json的工具类: public class GsonImpl extends Json { private Gson gson = new Gs ...

  3. 基于Volley,Gson封装支持JWT无状态安全验证和数据防篡改的GsonRequest网络请求类

    这段时间做新的Android项目的client和和REST API通讯框架架构设计.使用了非常多新技术,终于的方案也相当简洁优雅.client仅仅须要传Java对象,server端返回json字符串, ...

  4. 快速Android开发系列网络篇之Volley

    Volley是Google推出的一个网络请求库,已经被放到了Android源码中,地址在这里,先看使用方法 RequestQueue mRequestQueue = Volley.newRequest ...

  5. 8.3 网络通信 Volley

    AsyncHttpClient,它把HTTP所有的通信细节全部封装在了内部,我们只需要简单调用几行代码就可以完成通信操作了. Universal-Image-Loader,它使得在界面上显示网络图片的 ...

  6. Android Volley入门到精通:定制自己的Request

    经过前面两篇文章的学习,我们已经掌握了Volley各种Request的使用方法,包括StringRequest.JsonRequest.ImageRequest等.其中StringRequest用于请 ...

  7. Android 网络通信框架Volley简介

    1.1. Volley引入的背景在以前,我们可能面临如下很多麻烦的问题. 比如以前从网上下载图片的步骤可能是这样的流程: 在ListAdapter#getView()里开始图像的读取. 通过Async ...

  8. Android Volley完全解析

    1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进行H ...

  9. Android working with Volley

    Volley是google官方推出的一个开源网络访问库,在项目中直接使用它,而不需要写一大堆的重复的代码; 项目主页: https://android.googlesource.com/platfor ...

随机推荐

  1. hdu4998 Rotate 计算几何

    Noting is more interesting than rotation! Your little sister likes to rotate things. To put it easie ...

  2. ApplicationContext之getBean方法详解

    转自:http://www.sohu.com/a/115194552_466964 我们知道可以通过ApplicationContext的getBean方法来获取Spring容器中已初始化的bean. ...

  3. Mybatis一(基础)

    mybatis架构 1.mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper.xml文件即sql映射文件, ...

  4. DevExpress开发win8风格界面

    由于近期在对项目软件界面进行优化,找到了一款效果挺炫的插件,DevExpress15.2,可以制作win8可以滑动图标那个界面的效果,不多说,先贴图: (你没看错,这是用C#winform实现的) 可 ...

  5. C语言打印100到200之间的素数

    用C语言打印素数,我们首先要了素数的相关定义:只有1和它本身两个因数的自然数,也就是说除了1和它本身外,不能被其他自然数整除的数就称为素数. 例如:101只能被1 和101 整除:103只能被1 和1 ...

  6. MySQL管理实务处理

    事物处理可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么全不执行. 事务:指一组sql语句 回退:指撤销指定的sql语句过程 提交:将未存储的sql语句结果写入数据库表 保留点 ...

  7. RTMP、RTSP、HTTP可用的地址

    香港卫视:  rtmp://live.hkstv.hk.lxdns.com/live/hks1 香港财经,rtmp://202.69.69.180:443/webcast/bshdlive-pc 韩国 ...

  8. MySQL 中 utf8 和 utf8mb4 的使用以及字符集相关(原文优秀,必读)

    MySQL 在 5.5.3 之后 (查看版本:select version();) 增加了这个utf8mb4的编码,mb4 就是 most bytes 4 的意思,支持的字节数最大为 4,即专门用来兼 ...

  9. nginx下js文件修改后访问不更新问题解决

    今天遇到一个问题,nginx下js修改后不更新,加版本号,刷新浏览器缓存都不行,重启服务器才行,修改后又不更新了而且加载的js文件会有乱码或者文件加载不全的问题. 解决办法:修改nginx.conf, ...

  10. ubuntu网络配置及端口名修改

    一.网络配置文件 buntu系统进行网络配置有的时候用图形界面不起作用,这种情况下可以直接修改某些启动脚本或配置文件 Ubuntu系统进行网络配置涉及到几个配置文件1./etc/network/int ...