web-dev-qa-db-ja.com

HttpClient 4.1でセッションを処理する方法

HttpClient 4.1.1を使用して、サーバーのREST API。

何とかログインできたようですが、他のことをしようとすると失敗します。

おそらく、次のリクエストでCookieを設定する際に問題が発生します。

現在、私のコードは次のとおりです。

HttpGet httpGet = new HttpGet(<my server login URL>);
httpResponse = httpClient.execute(httpGet)
sessionID = httpResponse.getFirstHeader("Set-Cookie").getValue();
httpGet.addHeader("Cookie", sessionID);
httpClient.execute(httpGet);

HttpClientパッケージのセッション/ Cookie設定を管理するより良い方法はありますか?

38
special0ne

正しい方法は、 CookieStore を準備して、 HttpContextHttpClient#execute() 呼び出しごとに順番に渡します。

HttpClient httpClient = new DefaultHttpClient();
CookieStore cookieStore = new BasicCookieStore();
HttpContext httpContext = new BasicHttpContext();
httpContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore);
// ...

HttpResponse response1 = httpClient.execute(method1, httpContext);
// ...

HttpResponse response2 = httpClient.execute(method2, httpContext);
// ...
70
BalusC