53

私はokhttp 3.0.1を使用しています。

okhttp2でのCookie処理の例を取得しているすべての場所

OkHttpClient client = new OkHttpClient();
CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
client.setCookieHandler(cookieManager);

バージョン 3 での使用方法を教えてください。バージョン 3 には setCookieHandler メソッドがありません。

4

12 に答える 12

66

okhttp-urlconnection新しい OkHttp 3 CookieJar を使用して依存関係を取り除きたい場合は、このPersistentCookieJarを使用できます。

のインスタンスを作成し、PersistentCookieJarそれをOkHttpビルダーに渡すだけです。

CookieJar cookieJar =
                    new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(context));

OkHttpClient okHttpClient = new OkHttpClient.Builder()
                    .cookieJar(cookieJar)
                    .build();
于 2016-02-11T17:46:59.247 に答える
36

今、私はそれで遊んでいます。PersistentCookieStoreを試して、JavaNetCookieJar のgradle依存関係を追加します。

compile "com.squareup.okhttp3:okhttp-urlconnection:3.0.0-RC1"

そして初期化

    // init cookie manager
    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();

`

于 2016-01-19T21:01:30.163 に答える
25

ここでは、独自の CookieJar を作成する簡単な方法を示します。ご希望により延長可能です。私がしたことは、CookieJar を実装し、この CookieJar で OkHttpClient.Builder を使用して OkHttpClient を構築することです。

public class MyCookieJar implements CookieJar {

    private List<Cookie> cookies;

    @Override
    public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
        this.cookies =  cookies;
    }

    @Override
    public List<Cookie> loadForRequest(HttpUrl url) {
        if (cookies != null)
            return cookies;
        return new ArrayList<Cookie>();

    } 
}

OkHttpClient を作成する方法は次のとおりです。

OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.cookieJar(new MyCookieJar());
OkHttpClient client = builder.build();
于 2016-01-19T18:59:20.280 に答える
3

Kotlinで試すことができます:

val cookieJar = JavaNetCookieJar(CookieManager())
val url = "https://www.google.com/"

val requestBuilder = Request
        .Builder()
        .url(url)
        .get()

val request = requestBuilder
        .build()

val response = OkHttpClient.Builder()
        .cookieJar(cookieJar)
        .build()
        .newCall(request)
        .execute()

グラドル

dependencies {
    implementation("com.squareup.okhttp3:okhttp:4.2.2")
    implementation("com.squareup.okhttp3:okhttp-urlconnection:4.2.2")
}
于 2020-03-20T14:24:34.410 に答える