I'm looking for ability of holding session using aQuery, that starts from first HTTP request. I'm getting cookies and storing them, but how to add them to new request, so server will know that same user with same session trying to reach webservice?
I tried something like that, before ajax request (cookie holds Cookie object, callback holds AjaxCallback object):
Map<String, String> cookieMonster = new HashMap<String, String>();
cookieMonster.put("domain", cookie.getDomain());
cookieMonster.put("version", "" + cookie.getVersion());
cookieMonster.put("path", cookie.getPath());
cookieMonster.put("name", cookie.getName());
cookieMonster.put("value", cookie.getValue());
cookieMonster.put("expiry", cookie.getExpiryDate().toGMTString());
Then
callback.cookies(cookieMonster);
I also set
AjaxCallback.setReuseHttpClient(true);
But looks like there are some problem with this in android query, and it not behaves as I expected.
Anyone solved this issue? I would use sending token in each request as param, but I need counting session properly, not recreate them in each request.
Thanks in advance for any help!
Regards, David
UPDATE
In fact I was quite close to solution. Here is working method that I use before another callback where static method getCookie
holds list of cookies from previous callback (I use UserData.setCookie(status.getCookie() to save it from previous callback).
private void setCookie(AjaxCallback<JsonElement> callback) {
try {
List<Cookie> cookies = UserData.getCookie();
for (Cookie cookie : cookies) {
Map<String, String> cookieMonster = new HashMap<String, String>();
cookieMonster.put("domain", cookie.getDomain());
cookieMonster.put("version", "" + cookie.getVersion());
cookieMonster.put("path", cookie.getPath());
cookieMonster.put("name", cookie.getName());
cookieMonster.put("value", cookie.getValue());
if (cookie.getExpiryDate() != null) {
String DATE_FORMAT = "EEE, dd-MMM-yyyy HH:mm:ss z";
final SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
String dateTimeString = sdf.format(cookie.getExpiryDate());
cookieMonster.put("expiry", dateTimeString);
}
callback.cookie(cookie.getName(), cookie.getValue());
Log.d("Set cookie from UserData", cookie.toString());
}
} catch (Exception e) {
Log.d("Aq setCookie problem", "message: " + e.getMessage());
}
}