2011-12-22 9 views
2

localhost:7001/MyServletのようなページがあります。私のようなしかし プログラムでj_security_checkを使用する

String url = "http://localhost:7001/MyServlet" 
PostMethod method = new PostMethod(url); 
HttpClient client = new HttpClient(); 

の下に「に、MyServlet」のj_security_checkで保護されてからのHTTP接続要求を作っています。だから、私が接続しているときに、ログインページにリダイレクトされる。認証され、私のURLにアクセスを取得する方法

、1つのHttpConnectionを

注意に:私は

import org.apache.commons.httpclient.HttpClient; 
import org.apache.commons.httpclient.methods.PostMethod; 

答えて

0

apacheの共通のHTTPClientを使用し、私はあなたがにログインでき、は、単一のリクエストで、サーバーを呼び出す疑いますHTTP基本認証が有効になっている場合を除きます。私はまだHTTPClientのAPIの詳細を知らないが、基本的にはクッキーを使ってセッションを追跡する必要がある。あなたのログインを/j_security_checkにPOSTしてください。サーブレットにアクセスします。 (ACEGI Securityを使用している場合、同じ基本プロセスは/j_acegi_security_checkで動作します)

Tomcatの厄介なシワは、ただちに/j_security_checkに投稿すると400回の「不正なリクエスト」が発生します。そのオーセンティケータは状態遷移についてはかなり厄介であり、プログラマチッククライアントを考慮して設計されていませんでした。最初に/loginEntryにアクセスする必要があります(セッションクッキー以外の応答は捨てることができます)。 次にあなたのログイン情報を/j_security_checkに投稿してください。 次にの結果のリダイレクトに従ってください(実際は/loginEntryと思います)。実際には新しいログイン情報が保存されます。 最後に希望のサーブレットに投稿してください! NetBeans #5c3cb7fb60feは、この動作をTomcatのコンテナ認証を使用してHudsonサーバーにログインしていることを示しています。

関連する問題