2016-03-04 95 views
0

我有一個應用程序,通過被動客戶端進行身份驗證。基本上基於服務器信息,瀏覽器將啓動並顯示登錄屏幕。一旦用戶輸入登錄憑證,進一步處理cookie和會話將在shouldOverrideUrlLoading完成。在Android應用程序中處理集羣環境

當我連接到集羣環境中的Web應用程序服務器時,此問題即將通過身份驗證。當用戶連接到第一臺服務器時,它顯示他登錄屏幕,用戶輸入詳細信息,服務器認證,但在會話處理過程中,我的代碼使用相同的URL連接到同一臺服務器,但服務器的響應來自用戶沒有已經過身份驗證,而他已經完成身份驗證。

所以要區分不同的服務器,我們使用JSESSIONID來識別服務器。 我得到了第一個URL上使用的原始JSESSIONID,但是當第二個URL被觸發時,我的代碼使用JSESSIONID和其他來自第二個URL請求中第一個URL的cookie。要激發第二個網址,我使用了org.apache.http.impl.client.DefaultHttpClient.execute方法。

我不知道我缺少什麼來獲得服務器的響應,該用戶已經過身份驗證。

+0

這是非常抽象的。顯示代碼? –

回答

0

我解決了這個問題。 Cookie版本存在問題,我在爲第二個請求構建HTTP上下文時使用了該問題。

BasicClientCookie cookie = new BasicClientCookie(name,value); 
// cookie.setVersion(1); 
cookie.setDomain(host); 
cookie.setPath("/"); 
cookie.setSecure(true); 
cookieJar.addCookie(cookie); 

我評論了cookie的版本,然後它識別請求發送到在第一個請求中進行身份驗證的同一羣集成員。