Androidの複合用途開発モードでクッキー管理

Androidの複合用途hybirdフレームワークを達成するのWebViewの使用に基づいてどのような開発、それはWebViewのに同期しているときに我々はネイティブのページで、サーバーから返されたクッキーを取得する必要があり、元のページがWebView_cookiesから、サーバAPI呼び出しを前にしばらく最新のクッキーのHTTPリクエストヘッダを取得するには、書き込み、ユーザーのログイン状態を維持する唯一の方法、それ以外のサーバはセッションIDで検出されたクッキーを返します.DBエラーコードが失敗をログに記録するようにユーザに促す期限切れ。ローカル書き込みクッキーの間でHTTPリクエストのHTTPヘッダを送信するときに、それが応答を受信し、ローカルHTTPクッキーを更新するときに、ネットワークの枠組みをokhttpするには、例えば、2つのインターセプタを書き込むことによって得られ、クッキーが応答ヘッダから最新の情報を取得しますされました:

public class AddCookieInterceptor implements Interceptor {
    @Override
    public Response intercept(Chain chain) throws IOException {
        final Context context = PApplication.getInstance();
        String cookies = Commons.getSSOCookie(context);
        Request.Builder builder = chain.request().newBuilder();
        if (EmptyHelper.isNotEmptyOrNotNull(cookies)) {
            Request newRequest = builder.addHeader("Cookie", cookies).build();
            return chain.proceed(newRequest);
        }
    }
}
复制代码
public class ReceivedCookieInterceptor implements Interceptor{

    @Override
    public Response intercept(Chain chain) throws IOException {
        Response originalResponse = chain.proceed(chain.request());
        List<String> cookies = originalResponse.headers("Set-Cookie");
        if (!cookies.isEmpty()) {
            CookieManager cookieManager = CookieManager.getInstance();
            cookieManager.setAcceptCookie(true);// 允许接受 Cookie
            String domain = HeadDomin();
            for(String cookie : cookies){
                cookieManager.setCookie(domain,cookie);
            }
            cookieManager.flush();
        }
        return originalResponse;
    }
}
复制代码

ます。https://juejin.im/post/5ce79a4f6fb9a07ee4633d9dで再現

おすすめ

転載: blog.csdn.net/weixin_33721427/article/details/91465160