1,设置cookie
/**
* 添加cookie,并同步
* */
public static void setCookie(Context context,String cookie){
try{
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.setCookie(UrlUtils.getShopUrl(), cookie);
if (Build.VERSION.SDK_INT < 21) {
CookieSyncManager.getInstance().sync();
} else {
CookieManager.getInstance().flush();
}
}catch(Exception e){
e.printStackTrace();
PgyCrashManager.reportCaughtException(context,e);
}
}
2,清除cookie
/**
* 清除本地cookie
* */
public static void clearCookie(Context context){
try{
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();//移除
cookieManager.removeAllCookie();
if (Build.VERSION.SDK_INT < 21) {
CookieSyncManager.getInstance().sync();
} else {
CookieManager.getInstance().flush();
}
}catch(Exception e){
e.printStackTrace();
PgyCrashManager.reportCaughtException(context, e);
}
}
3,okhttp网络登录后通过cookie设置webview同步登录
private void http(final String ticket){
FormBody fb=new FormBody.Builder().add("ticket", ticket).build();
Request request=new Request.Builder().url(UrlUtils.getUpTicketUrl())
.post(fb).build();
OkHttpClient client=new OkHttpClient.Builder().cookieJar(new CookieJar() {
@Override
public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
if (cookies.size() > 0) {
setCookie(mActivity, cookies.get(0).toString());
}
}
@Override
public List<Cookie> loadForRequest(HttpUrl url) {
return new ArrayList<Cookie>();
}
}).build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
}
});
}