您的位置:首页 > 理论基础 > 计算机网络

Afinal 框架——FinalHttp请求时保存当前session并使用同一个session进行请求

2015-05-21 12:34 162 查看
当需要实现一个注册功能,通常都会使用手机号获取验证码进行注册,最为快捷,那么对于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>() {
......(省略)
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐