将会话 ID 从 Android 应用程序发送到 Jersey Web 服务
Sending the session id from an Android App to a Jersey web service
我得到了一个 Android 应用程序,它应该与使用 Jersey
和 Jetty
.
实现的 Web 服务进行通信
我可以使用此代码读取传入的会话 ID:
private static void getCookie(HttpResponse httpResponse)
{
Header[] headers = httpResponse.getAllHeaders();
for (int i=0; i < headers.length; i++)
{
Header h = headers[i];
String s1 = h.getName();
if(s1.equals("Set-Cookie"))
{
sessionCookieValue = h.getValue().split(";",2)[0];
return;
}
}
}
这似乎有效,我在 cookie 值中得到了这样的值:JSESSIONID=8pdfuwgduykls5cvj971ylrc
问题是我好像没有正确发送。 Web 服务注入了一个 HttpServletRequest
参数,该参数应该保存会话 ID,但实际上没有。
我尝试通过的方式是这样的:
DefaultHttpClient client = new DefaultHttpClient();
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", sessionCookieValue);
cookie.setPath("/");
cookie.setDomain(MyApplication.WEB_SERVICE_BASE_ADDRESS); //"192.168.200.158/"
cookieStore.addCookie(cookie);
client.setCookieStore(cookieStore);
HttpResponse httpResponse;
try
{
httpResponse = client.execute(request);
...
}
为什么会话 ID 没有注入到 Web 服务中的请求中?
终于找到问题了
最初的评论是正确的 - BasicClientCookie
中的 cookie 键应该是 "JESSIONID"。路径和域应该像我在那里那样设置。
主要问题只是从 `sessionCookieValue 中删除 "JSESSIONID=" 前缀。我删除它后,一切正常。
我得到了一个 Android 应用程序,它应该与使用 Jersey
和 Jetty
.
我可以使用此代码读取传入的会话 ID:
private static void getCookie(HttpResponse httpResponse)
{
Header[] headers = httpResponse.getAllHeaders();
for (int i=0; i < headers.length; i++)
{
Header h = headers[i];
String s1 = h.getName();
if(s1.equals("Set-Cookie"))
{
sessionCookieValue = h.getValue().split(";",2)[0];
return;
}
}
}
这似乎有效,我在 cookie 值中得到了这样的值:JSESSIONID=8pdfuwgduykls5cvj971ylrc
问题是我好像没有正确发送。 Web 服务注入了一个 HttpServletRequest
参数,该参数应该保存会话 ID,但实际上没有。
我尝试通过的方式是这样的:
DefaultHttpClient client = new DefaultHttpClient();
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", sessionCookieValue);
cookie.setPath("/");
cookie.setDomain(MyApplication.WEB_SERVICE_BASE_ADDRESS); //"192.168.200.158/"
cookieStore.addCookie(cookie);
client.setCookieStore(cookieStore);
HttpResponse httpResponse;
try
{
httpResponse = client.execute(request);
...
}
为什么会话 ID 没有注入到 Web 服务中的请求中?
终于找到问题了
最初的评论是正确的 - BasicClientCookie
中的 cookie 键应该是 "JESSIONID"。路径和域应该像我在那里那样设置。
主要问题只是从 `sessionCookieValue 中删除 "JSESSIONID=" 前缀。我删除它后,一切正常。