我有一个服务器使用spring security remember-me-authentication,我在POST方法中使用Android DefaultHttpClient登录.我能够成功登录甚至能够检索创建的会话cookie(在我的情况下,jsessionid cookie和spring security记住我的cookie).
但奇怪的是在执行POST方法之后
mResponse = mDefaultHttpClient.execute(mHttpPost)
Run Code Online (Sandbox Code Playgroud)
我能够检索cookie,但只能在我的DefaultHttpClient中使用getCookieStore方法
mDefaultHttpClient.getCookieStore()
Run Code Online (Sandbox Code Playgroud)
不使用HttpResponse对象的getAllHeaders方法
headers = mResponse.getAllHeaders();
HeaderIterator headerIterrator = new BasicHeaderIterator(headers, null);
while (headerIterrator.hasNext()) {
Header header = headerIterrator.nextHeader();
headerStringBuilder.append(" " + header.getName() + ":" + header.getValue());
}
Log.e("Post response headers: ", headerStringBuilder.toString());
Run Code Online (Sandbox Code Playgroud)
我在这里得到一些标题(服务器,X-powered-By,日期,内容类型,内容长度)但不是Set-Cookie标题或其他一些(Access-control-Allow-*etc)
谢谢你的帮助!
更新:看起来DefaultHttpClient不会暴露一些标头.我尝试添加响应拦截器(如下所示)和getAllHeaders返回我想要的所有标头.感谢您阅读我的问题!
mDefaultHttpClient.addResponseInterceptor(new HttpResponseInterceptor() {
public void process(final HttpResponse response, final HttpContext context)
throws HttpException, IOException {
Header[] headers = response.getAllHeaders();
for (int i = 0; i < headers.length; i++) {
Header header = headers[i];
Log.e("HTTP: …Run Code Online (Sandbox Code Playgroud)