私の単純な Apache HttpClient (4.0.1) クライアント アプリケーションは、main() メソッドでサーバー URL に対して HttpGet 要求を行い、応答を出力します。起動時に、アプリケーションは java.net.CookieHandler の実装を静的ブロックに登録します。
サーバー側で受信した Cookie を確認したところ、HttpClient が GET 要求を行ったときに、サーバーが Cookie を受信していないことがわかりました。
一方、Apache HttpClient をプレーンな java.net.URL(HTTP_URL).openStream() に置き換えたところ、Cookie は Request で CookieHandler によって設定され、サーバーによって受信されました。
CookieHandler が Apache HttpClient で動作しないということですか?
コード:
クライアント.java
静的 { CookieHandler.setDefault(新しい CookieHandler() { public Map get(URI u, List r) { return Collections.singletonMap("Cookie", Collections.singletonList(COOKIE_STRING)); } }); }
HttpClient の使用(リクエストに Cookie を配置しません)
HttpClient クライアント = 新しい DefaultHttpClient(); HttpGet get = 新しい HttpGet(HTTP_URL); client.execute(get);
java.net.URL を使用する(要求に応じて Cookie を設定する)
URL url = 新しい URL(HTTP_URL); 入力ストリームは = url.openStream();