Afinal 框架——FinalHttp请求时保存当前session并使用同一个session进行请求
当需要实现一个注册功能,通常都会使用手机号获取验证码进行注册,最为快捷,那么对于Android来说,在获取验证码的请求中需要保存服务器当前的session,在去传递验证码时,服务器会判断验证码是否失效或是不在同一个session中。
那么,客服端肯定需要保存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>() {
......(省略)
}
}
Thank for your time !

浙公网安备 33010602011771号