Android Volley 的post请求自定义 和 volley 的cookies 使用
2015-10-30 12:19
471 查看
android的网络请求有很多第三方框架,其中volley由于其高的定制性、稳定性以及速度快得到了大家广泛的使用以及研究,这里我只是说一下我对这个框架下post请求使用的心得体会。
一.cookies的使用
cookies,token,seesion这些都可以理解为我们请求登陆接口后,后台根据用户信息生成一串字符串,然后每次请求接口后会读取这串字符串,就可以识别为那个用户,并且根据用户信息做接下来的逻辑判断。
首先自定义一个MyPostRequest 继承 Request
然后重写getHeaders()方法
cookie为取到的cookie值缓存起来
获取cookie
这个方法里去cookie值
二、BodyContentType
这个方法可以设置contenttype,contenttype为请求heard里面的头部分,用来识别数据的格式
三。定义参数为object类型
从手机端到服务器传递的之最后都会转化成byte[],所以我们之object转成byte数组,然后后台可以识别就可以自,治理我转化成json。
四、设置时间间隔和重复请求
这个方法用来设置请求过期时间,第一个参数为时间,第二个为重复请求次数
五、最后在说下Response parseNetworkResponse方法
这个方法为请求返回后的方法
其中response里面放的是请求返回的数据
response.data放的是请求返回的体,是body,为byte数组
response.headers 为请求头,存放contenttype、cookies等一些heard信息
一.cookies的使用
cookies,token,seesion这些都可以理解为我们请求登陆接口后,后台根据用户信息生成一串字符串,然后每次请求接口后会读取这串字符串,就可以识别为那个用户,并且根据用户信息做接下来的逻辑判断。
首先自定义一个MyPostRequest 继承 Request
然后重写getHeaders()方法
/** * 在heard里面加入cookies * */ @Override public Map<String, String> getHeaders() throws AuthFailureError { if (cookies!=null && cookies.length()>1) { HashMap<String, String> headers = new HashMap<String, String>(); headers.put("cookie",cookies); Log.d("Volley", "headers----------------" + headers); return headers; }else { return super.getHeaders(); } }
cookie为取到的cookie值缓存起来
获取cookie
/** * 对请求的结果进行处理 * */ @Override protected Response<RequestCall> parseNetworkResponse( NetworkResponse response) { if (cookies==null || DtdApplication.cookies.length()<1) { Map<String, String> responseHeaders = response.headers; String rawCookies = responseHeaders.get("Set-Cookie"); if (rawCookies!=null) { cookies=rawCookies.substring(0,rawCookies.indexOf(";")); } } }
这个方法里去cookie值
二、BodyContentType
@Override public String getBodyContentType() { return "application/json; charset=" + getParamsEncoding(); }
这个方法可以设置contenttype,contenttype为请求heard里面的头部分,用来识别数据的格式
三。定义参数为object类型
@Override public byte[] getBody() throws AuthFailureError { Map<String, Object> params = parms; if (params != null && params.size() > 0) { try { return JsonUtils.toJson(params).getBytes(getParamsEncoding()); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } return null; }
从手机端到服务器传递的之最后都会转化成byte[],所以我们之object转成byte数组,然后后台可以识别就可以自,治理我转化成json。
四、设置时间间隔和重复请求
/** * 重复请求次数时间设置 * */ @Override public RetryPolicy getRetryPolicy() { RetryPolicy retryPolicy = new DefaultRetryPolicy(1000*3, 0, 1.0f); return retryPolicy; }
这个方法用来设置请求过期时间,第一个参数为时间,第二个为重复请求次数
五、最后在说下Response parseNetworkResponse方法
这个方法为请求返回后的方法
其中response里面放的是请求返回的数据
response.data放的是请求返回的体,是body,为byte数组
response.headers 为请求头,存放contenttype、cookies等一些heard信息
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析