を送信していない私のOkHttp3クライアント、クッキーと迎撃宣言です:はOkHttp3がここにクッキー
CookieJar cookieJar = new CookieJar() {
private final HashMap<String, List<Cookie>> cookieStore = new HashMap<>();
@Override
public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
//System.out.println("added new cookies: "+cookies);
cookieStore.put(url.host(), cookies);
//System.out.println("list of all cookies: "+cookieStore);
}
@Override
public List<Cookie> loadForRequest(HttpUrl url) {
List<Cookie> cookies = cookieStore.get(url.host());
System.out.println();
return cookies != null ? cookies : new ArrayList<Cookie>();
}
};
HttpLoggingInterceptor logging = new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.HEADERS);
private OkHttpClient sisgradRequest = new OkHttpClient.Builder()
.cookieJar(cookieJar)
.addNetworkInterceptor(new UserAgentInterceptor(userAgent))
.addInterceptor(logging)
.build();
それがクラス内にあります。
2016年8月16日8時20分22秒PM okhttp3.internal:ログ情報で
Request fakeUserNavigation = new Request.Builder().
url(protocol + "://" + domain + "/" + "sentinela" + "/").
build();
Response a = sisgradRequest.newCall(fakeUserNavigation).execute();
、私はこれを見ることができます:メソッドの多くは、方法は、例えば、sisgradRequestと呼ばれるこのOkHttpClientから呼び出しを実行します。プラットフォームログ
INFO: Set-Cookie: JSESSIONID=E793...31C2.sis_sentinela_worker_6; Path=/sentinela/; Secure; HttpOnly
したがって、この最初の呼び出しでクッキーが配信されています。
Request fakeUserNavigation2 = new Request.Builder().
url(protocol + "://" + domain + "/" + "sentinela" + "/" + "login.open.action").
build();
Response b = sisgradRequest.newCall(fakeUserNavigation2).execute();
をが、GETリクエストは次のように記録されます:その後、私はこのように、別の電話をかけることがENDのGETを持っているので
はINFO: --> GET https://.../sentinela/login.open.action http/1.1
Aug 16, 2016 8:20:22 PM okhttp3.internal.platform.Platform log
INFO: --> END GET
これは、全体の要求です。クッキーは送信されていません。すべてのメソッド呼び出しは同じOkHttp3Clientを使用しているので、クッキーはそれらの間で共有されるべきです。私はhereからクッキージャーの3つの実装をすべて試しましたが、どれも動作しません。これは私のコードでは、最後の答えからです。
私は同じ問題があります。あなたはこれを解決することができましたか? – Tooroop