2013-05-13 42 views
6

HttpClientセッションを終了するにはどうすればいいですか?HttpClientセッションを終了する

私は次のようにApache HttpClientを

public HttpClient loginToHexgen(String username, String password) { 
     HttpClient client = new DefaultHttpClient(); 

     // send post url to login to hexgen 
     HttpPost post = new HttpPost("http://localhost:8080/j_spring_security_check"); 

     try { 
      // set the user name and password 
      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
      nameValuePairs.add(new BasicNameValuePair("j_username", username)); 
      nameValuePairs.add(new BasicNameValuePair("j_password", password)); 

      post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = client.execute(post); 

      HttpEntity entity = response.getEntity(); 

      if (entity != null) { 
       post.abort(); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return client; 
    } 

を使用してアプリケーションにログインし、次のコードを使用します。ここ

HttpClient client = new DefaultHttpClient(); 
client= httpRequest.loginToHexgen("mayank", "hexgen"); 

httpRequestloginToHexgen方法が使用されているクラスです。

複数のユーザーと異なるユーザー名とパスワードでシステムにログインするにはどうすればいいですか?

たとえば、同じセッションで、あるユーザーをログアウトして他のユーザーを使用してログインしたいとします。

答えて

4

新しいCookieStoreを使用して新しいユーザーに要求を送信する場合があります。

// Create a local instance of cookie store 
cookieStore = new BasicCookieStore(); 
// Set the store 
httpClient.setCookieStore(cookieStore); 

サーバーが新しいユーザーに新しいセッションを開きます。古いセッションは終了しませんのでご注意ください。 この方法を使用することはお勧めしません。

セッション管理はサーバー側で実行されます。クライアント側では実行できません。 テストの最後に、サーバー側のセッションを無効にするサーバーURLを呼び出すことをお勧めします。 (一般的に、フォーム認証を使用するアプリケーションではログアウト機能があり、使用する必要があります)

+1

+1とは違うパスワードで別のユーザーを送信しようとしましたが、私はインデントされたように働いた。努力をいただきありがとうございます。 –

+0

'loginToHexgen'関数に次のコードがあるという問題:' HttpClient client = new DefaultHttpClient(); '。 新しいユーザー用のcookieStoreの作成と同じです。 注:1.認証されたユーザーに代わってURLにアクセスする場合は、同じHttpClientインスタンスを使用する必要があります(そうでない場合、要求はクーキーなしになります)。 2.サーバーをチェックインすると、ログインごとに新しいセッションが作成されます。 – Michael

関連する問題