改造2 / okhttp3清除饼干

时间:2017-04-21 12:55:59

标签: android retrofit2 okhttp3

我正在使用改装和cookieJar

okBuilder.cookieJar(getCookieJar());

一切都很好,但有时我想清除饼干。我怎么能在改造或okhttp中做到这一点?

在JavaNetCookieJar中只有两种公共方法:

cookieJar.loadForRequest()
cookieJar.saveFromResponse();

3 个答案:

答案 0 :(得分:1)

CookieHandler cookieHandler = new CookieManager(
            new PersistentCookieStore(ctx), CookiePolicy.ACCEPT_ALL);
    // init okhttp 3 logger
    HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
    logging.setLevel(HttpLoggingInterceptor.Level.BODY);
    // init OkHttpClient
    OkHttpClient httpClient = new OkHttpClient.Builder()
            .cookieJar(new JavaNetCookieJar(cookieHandler))
            .addInterceptor(logging)
            .build();

您可以使用cookie处理程序进行进一步修改:)

答案 1 :(得分:0)

试试这个。

    CookieManager cookieManager = new CookieManager();
    cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);

    JavaNetCookieJar javaNetCookieJar = new JavaNetCookieJar(cookieManager);

    OkHttpClient client = new OkHttpClient.Builder()
                                          .cookieJar(javaNetCookieJar)
                                          .build();

    cookieManager.getCookieStore().removeAll();

答案 2 :(得分:0)

我可能会迟到这个问题的答案。仍然发布一个答案,可能会帮助那些被清除cookie的人。

如果您使用 android.webkit.CookieManager CookieManager 。这是适合我的解决方案: kotlin版本:

var cookieManager: CookieManager = CookieManager.getInstance()
    if (cookieManager.hasCookies()) {
        // cookieManager.removeAllCookie() // deprecated
        cookieManager.removeAllCookies(ValueCallback {

        })
}

Java版:

CookieManager cookieManager = CookieManager.getInstance();
    if (cookieManager.hasCookies()) {
        cookieManager.removeAllCookie();  // or
        cookieManager.removeAllCookies(new ValueCallback<Boolean>() {
            @Override
            public void onReceiveValue(Boolean aBoolean) {

            }
        });
 }