Android中Volley框架下保持会话方法
公司经理把我拉出来,死马当活马医,做一个安卓app,作为刚毕业几个月且只是培训了几个月的小白来说,这无疑是一个非常大的挑战,当然最大的挑战不是这个,最大的挑战时两个周做出来。这是最蛋疼的,说实话,对于有两三年的开发经验的人来说,两个周开发一个项目很简单,说不定还有很多时间用来干别的。
于是一上来就把自己给难住了,登陆还是很好做的,只要验证返回的信息就可以跳转,但是在接下来后面的数据接口连接的时候各种报错,整了两天,查了很多信息,还接受了公司老人的嘲讽和谩骂终于做出来了。
这个是基于session的一个网络会话,手机app给服务器发送登陆请求的时候,服务器返回的网络response(networkRespone)的头(head)里面存放着你想要的sessionid。这个时候只要重写parseNetworkResponse就可以了:
第一步:在errorLitener后面添加这个方法获取sessionid
{ protectedResponse<String>parseNetworkResponse(NetworkResponseresponse){ Response<String>r=super.parseNetworkReponse(response); Map<String,String>head=response.headers; Stringcookies=head.get("Set-Cookie"); Contant.cookie=cookies.substring(0,cookies.indexOf(";")); returnr; } };
以上是写在最初登陆时候的页面的。
第二步:
Contant.cookie这个是自己写的一个全局变量,写起来很简单 publicclassContant{ publicstaticvolatileStringcookie=null; }
第三步:在发送数据请求的时候发送session
StringRequestrequest=newStringRequest(Request.Method.GET,url,listener, errorListener){ publicMap<String,String>getHeaders()throwsAuthFailureError{ if(Contant.localCookie!=null&&Contant.localCookie.length()>0){ HashMap<String,String>headers=newHashMap<String,String>(); headers.put("cookie",Contant.Cookie); Log.d("调试","headers--"+headers); returnheaders; }else{ returnsuper.getHeaders(); } } };
这里面的listener和errorlistener扩展写,写在外面也行,写在这里面也可以,这样就可以了
以上所述是小编给大家介绍的Android中Volley框架下保持会话方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!