CookieManager.getCookie()返回不同的值

时间:2016-06-22 18:30:16

标签: java android cookies

以下是我在Android应用程序中获取一些cookie后验证的代码。

String url = "https://host:port/sso/SSOServlet";
BasicCookieStore cookieJar = new BasicCookieStore();
CookieManager cookieMgr = CookieManager.getInstance();
String host = null;
URL urlObj = Util.getUrl(url);
host = urlObj.getHost();

String cookiesHost = cookieMgr.getCookie(host); // value for cookiesHost is JSESSIONID

String cookiesURL = cookieMgr.getCookie(url); // value for cookiesURL is JSESSIONID and a custom Session id for application. 

如果我使用cookieMgr.getCookie()而不是hosturl会为某个服务器返回不同的值。这是为什么?对于某些服务器,如果我使用hosturl,则会返回相同的值。为什么会发生这种情况?

这之前为主机OR url返回了相同的值,但是我正在使用的这个服务器正在返回我在代码注释中提到的值。

2 个答案:

答案 0 :(得分:1)

getHost()只返回域名。例如,google.com中的http://google.com/search。我猜你的getUrl()方法会返回整个网址。

这为CookieManager实例提供了不同的输入,从而产生不同的输出。

答案 1 :(得分:1)

如果不知道每个变量的返回结果,很难确定导致变化结果的确切问题。

当您看到Cookie中的差异时,请提供cookiesHostcookiesURL的值。

正如您使用example.com(HOST)时对问题的第一个回复中提到的,会为example.com创建会话和Cookie,然后很可能会重定向到BaseURL {{1}创建一个新会话。