此次项目有这样一个需求,用户登录了app后,中途点击app内的webview时,用户不需要再次登录。那么,这就需要我们在登录的时候将用户的cookies保存下来。
下面简单说下使用方法就好,具体解释,请参考博客:http://blog.csdn.net/jdsjlzx/article/details/44700965
下面是我项目中使用的方法:`
final AsyncHttpClient client = new AsyncHttpClient();
//保存cookie,自动保存到了shareprefercece
PersistentCookieStore myCookieStore = new PersistentCookieStore(LoginActivity.this);
client.setCookieStore(myCookieStore);
client.post(HttpConstant.USER_LOGIN, params, new JsonHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers,
Throwable throwable, JSONObject errorResponse) {
super.onFailure(statusCode, headers, throwable, errorResponse);
ToastUtils.ToastShowShort(mContext, "登录失败,请检查网络");
if (bufferCircleDialog.isShowDialog()){
bufferCircleDialog.dialogcancel();
}
}
@Override
public void onSuccess(int statusCode, Header[] headers,
JSONObject response) {
super.onSuccess(statusCode, headers, response);
网络请求使用的是android-async-http-1.4.8.jar包,
下面是获取cookies,并设置(写在webview内):
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
cookieManager.setAcceptCookie(true);
webView.getSettings().setBlockNetworkImage(false);
//
PersistentCookieStore myCookieStore = new PersistentCookieStore(WebViewActivity.this);
List<Cookie> cookies = myCookieStore.getCookies();
for (int i = 0; i < cookies.size(); i++) {
String cookieString = cookies.get(i).getName() + "=" + cookies.get(i).getValue() +
";domain=" + cookies.get(i).getDomain() + ";path=" + cookies.get(i).getPath();
cookieManager.setCookie(cookies.get(i).getDomain(), cookieString);
}
android-async-http-1.4.8.jar包下载地址为: