Afinal 框架——FinalHttp请求时保存当前session并使用同一个session进行请求
2015-05-21 12:34
162 查看
当需要实现一个注册功能,通常都会使用手机号获取验证码进行注册,最为快捷,那么对于Android来说,在获取验证码的请求中需要保存服务器当前的session,在去传递验证码时,服务器会判断验证码是否失效或是不在同一个session中。
那么,客服端肯定需要保存Cookie,再下次请求时配置当前HTTPClient的CookieStore,返回给服务器。这样就与服务器保持同一个session,如下:
创建一个类MyCookieStore:
发送获取验证码的第一个请求,返回成功时,向服务器获取CookieStore:
发送第二个请求时,配置finalHttp:
那么,客服端肯定需要保存Cookie,再下次请求时配置当前HTTPClient的CookieStore,返回给服务器。这样就与服务器保持同一个session,如下:
创建一个类MyCookieStore:
package cc.siyo.imenu.imenu_enjoy.model; import org.apache.http.client.CookieStore; /** * Created by Lemon on 2015/5/21. * Desc:用于存储CookieStore,请求处于同一session */ public class MyCookieStore { private static final String TAG = "MyCookieStore"; public static CookieStore cookieStore=null; }
发送获取验证码的第一个请求,返回成功时,向服务器获取CookieStore:
finalHttp = new FinalHttp(); finalHttp.post(API.server, ajaxParams, new AjaxCallBack<String>() { @Override public void onFailure(Throwable t, int errorNo, String strMsg) { super.onFailure(t, errorNo, strMsg); closeProgressDialog(); prompt(getResources().getString(R.string.request_time_out)); System.out.println("errorNo:" + errorNo + ",strMsg:" + strMsg); } @Override public void onStart() { super.onStart(); showProgressDialog(getResources().getString(R.string.loading)); } @Override public void onLoading(long count, long current) { super.onLoading(count, current); } @Override public void onSuccess(String t) { super.onSuccess(t); //从服务器获取CookieStore,保存到MyCookieStore DefaultHttpClient client=(DefaultHttpClient)finalHttp.getHttpClient(); MyCookieStore.cookieStore = client.getCookieStore(); if (!StringUtils.isBlank(t)) { Log.e(TAG, Constant.RESULT + API.GET_VERIFY_CODE + "\n" + t.toString()); JSONStatus jsonStatus = BaseJSONData(t); if (jsonStatus.isSuccess) { handler.sendMessage(handler.obtainMessage(GET_VERIFY_CODE_SUCCESS, BaseJSONData(t))); } else { handler.sendMessage(handler.obtainMessage(GET_VERIFY_CODE_FALSE, BaseJSONData(t))); } } else { prompt(getResources().getString(R.string.request_no_data)); } } });
发送第二个请求时,配置finalHttp:
@Override public void initData() { finalHttp = new FinalHttp(); //配置已保存的CookieStore,保证处于同一session中请求 finalHttp.configCookieStore(MyCookieStore.cookieStore); finalHttp.post(API.server, ajaxParams, new AjaxCallBack<String>() { ......(省略) } }
相关文章推荐
- 使用PostSharp进行AOP框架设计:一个简单的原型
- 使用session时候,遇到的一个问题(请求解决方法)
- 如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
- afinal - afinal 是一个android的 orm 和 ioc 框架。通过afinal的finalAcitivity,finalBitmap,finalDB,finalHttp,开发android应用将更加简单。 - Google Project Hosting
- 使用Jquery提交POST请求,然后进行报表展示的一个示例
- android -- 框架 使用android快速开发框架afinal的FinalBitmap
- 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享
- 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享
- 快速开发框架Afinal的使用(数据库操作,HTTP请求,网络图片加载,控件绑定)
- 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享
- 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享
- 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享
- 快速开发框架Afinal的使用(数据库操作,HTTP请求,网络图片加载,控件绑定)
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
- C++使用CInternetSession请求url下载jason数据,并且进行解析。以及注意事项
- 2.1、Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职
- 使用spring-session框架对会话session进行分布式管理
- asp.net mvc 使用ajax请求 控制器 (PartialViewResult)分部的action,得到一个分部视图(PartialView)的HTML,进行渲染
- 使用一个HttpModule拦截Http请求,来检测页面刷新(F5或正常的请求)
- 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享