时间:2021-05-20
公司经理把我拉出来,死马当活马医,做一个安卓app,作为刚毕业几个月且只是培训了几个月的小白来说,这无疑是一个非常大的挑战,当然最大的挑战不是这个,最大的挑战时两个周做出来。这是最蛋疼的,说实话,对于有两三年的开发经验的人来说,两个周开发一个项目很简单,说不定还有很多时间用来干别的。
于是一上来就把自己给难住了,登陆还是很好做的,只要验证返回的信息就可以跳转,但是在接下来后面的数据接口连接的时候各种报错,整了两天,查了很多信息,还接受了公司老人的嘲讽和谩骂终于做出来了。
这个是基于session的一个网络会话,手机app给服务器发送登陆请求的时候,服务器返回的网络response(networkRespone)的头(head)里面存放着你想要的sessionid。这个时候只要重写parseNetworkResponse就可以了:
第一步: 在errorLitener后面添加这个方法获取sessionid
{protected Response<String> parseNetworkResponse(NetworkResponse response){Response<String> r = super.parseNetworkReponse(response);Map<String,String> head = response.headers;String cookies = head.get("Set-Cookie");Contant.cookie = cookies.substring(0,cookies.indexOf(";"));return r;}};以上是写在最初登陆时候的页面的。
第二步:
Contant.cookie 这个是自己写的一个全局变量,写起来很简单public class Contant{public static volatile String cookie = null;}第三步:在发送数据请求的时候发送session
StringRequest request = new StringRequest(Request.Method.GET, url, listener,errorListener) {public Map<String, String> getHeaders() throws AuthFailureError {if (Contant.localCookie != null && Contant.localCookie.length() > 0) {HashMap<String, String> headers = new HashMap<String, String>();headers.put("cookie", Contant.Cookie);Log.d("调试", "headers--" + headers);return headers;}else {return super.getHeaders();}}};这里面的listener和errorlistener扩展写,写在外面也行,写在这里面也可以,这样就可以了
以上所述是小编给大家介绍的Android中Volley框架下保持会话方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Android使用volley过程中遇到的问题解决办法本文主要介绍使用volley过程中遇到的问题,错误提示:com.android.volley.NoConn
Android中Volley二次封装并实现网络请求缓存Android目前很多同学使用Volley请求网络数据,但是Volley没有对请求过得数据进行缓存,因此需
Android网络请求框架Volley实例详解首先上效果图Logcat日志信息onReponseVolley特别适合数据量不大但是通信频繁的场景,像文件上传下载
Volley现在已经被官方放到AOSP里面,已经逐步成为Android官方推荐的网络框架。类抽象对Http协议的抽象Requeset顾名思义,对请求的封装,实现
使用volley进行网络请求:需先将volley包导入androidstudio中File下的ProjectStructrue,点加号导包volley网络请求步