2013-05-13 2 views
6

Comment quitter la session HttpClient?Quitter la session HttpClient

J'utilise le code suivant pour vous connecter à l'application en utilisant 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; 
    } 

comme ce qui suit:

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

ici httpRequest est la classe où la méthode loginToHexgen est utilisée.

Si je veux me connecter au système avec plusieurs utilisateurs avec différents nom d'utilisateur et mot de passe, comment faire cela?

Comme par exemple dans la même session, je veux me déconnecter d'un utilisateur et me connecter avec un autre utilisateur.

Répondre

4

Vous pouvez utiliser une solution de contournement - pour envoyer une demande à un nouvel utilisateur avec un nouveau cookieStore.

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

Le serveur ouvrira une nouvelle session à votre nouvel utilisateur. Veuillez noter que l'ancienne session ne sera PAS fermée. Je ne recommande pas d'utiliser de cette façon.

La gestion de session est effectuée côté serveur - vous ne pouvez pas le faire côté client. Je vous recommande à la fin de votre test d'appeler un URL de serveur qui invalidera une session côté serveur. (généralement les applications qui utilisent l'authentification par formulaire ont une fonctionnalité de déconnexion et vous avez juste besoin de l'utiliser)

+1

+1 pour la réponse, j'ai essayé d'envoyer un autre utilisateur avec un mot de passe différent mais à ma grande surprise, il ne créait aucun problème et travaillé comme je indenté. Merci pour l'effort. –

+0

Le problème que vous avez le code suivant dans votre fonction 'loginToHexgen':' HttpClient client = new DefaultHttpClient(); '. Il est égal à la création de cookieStore pour un nouvel utilisateur. Remarques: 1. Si vous voulez accéder à l'URL au nom de l'utilisateur authentifié, vous devez utiliser la même instance HttpClient (sinon la requête sera sans cooekies). 2. Vous pouvez vérifier dans votre serveur et vous verrez que chaque connexion une nouvelle session est créée. – Michael