2013-05-13 22 views
6

HttpClient oturumundan nasıl çıkış yapılır?HttpClient oturumundan çıkış

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

httpRequestloginToHexgen yöntemi kullanılırsa sınıftır:

aşağıdaki gibi 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; 
    } 

kullanarak uygulamaya giriş yapmak için aşağıdaki kodu kullanabilirsiniz.

Farklı kullanıcı adı ve parola ile birden çok kullanıcı ile sisteme giriş yapmak isterim.

Örneğin aynı oturumda olduğu gibi, bir kullanıcıyı kapatmak ve diğer kullanıcılarla giriş yapmak istiyorum.

cevap

4

Yeni bir kullanıcıya yeni bir cookieStore ile istek göndermek için bir geçici çözüm kullanabilirsiniz.

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

Sunucu, yeni kullanıcınıza yeni bir oturum açacaktır. Lütfen eski seansın kapalı olmayacağını unutmayın. Bu şekilde kullanılması tavsiye edilmez.

Oturum yönetimi sunucu tarafında gerçekleştirilir - bunu istemci tarafında yapamazsınız. Testinizin sonunda, sunucu tarafında bir oturumu geçersiz kılacak bir sunucu URL'sini çağırmanızı tavsiye ederim. (Genellikle Form kimlik doğrulaması kullanan uygulamaların bir çıkış işlevi vardır ve bunu kullanmanız yeterlidir)

+1

+1 yanıt için farklı bir kullanıcı ile farklı parola göndermeyi denedim, ancak benim için sürpriz olmadı. ben girintili olarak çalıştı. Çaba için teşekkürler. –

+0

"loginToHexgen" işlevinizde aşağıdaki koda sahip olduğunuz sorun: "HttpClient client = new DefaultHttpClient();'. Yeni bir kullanıcı için cookieStore'un oluşturulması eşittir. Notlar: 1. Kimliği doğrulanmış bir kullanıcı adına URL'ye erişmek isterseniz, aynı HttpClient örneğini kullanmanız gerekir (aksi takdirde istek cooikies olmadan olur). 2. Sunucunuzu kontrol edebilir ve her oturum açmanın yeni bir oturum oluşturulduğunu göreceksiniz. – Michael