2016-03-04 93 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的版本,然后它识别请求发送到在第一个请求中进行身份验证的同一群集成员。