I have a server that uses spring security-me-authentication, which I log in using Android DefaultHttpClient in the POST method. I can successfully log in and even access session cookies (in my case, jsessionid cookies and spring security remember cookies).
But it’s strange that after executing the POST method, for example
mResponse = mDefaultHttpClient.execute(mHttpPost)
I can get cookies, but only using the getCookieStore method in my DefaultHttpClient, for example
mDefaultHttpClient.getCookieStore()
the getAllHeaders method of the HttpResponse object is not used
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());
I am returning some headers (Server, X-powered by By, Date, Content-Type, Content-Length), but not a Set-Cookie header or a few others (Access-control-Allow- *, etc.).
Thanks for any help!
UPDATE: It looks like DefaultHttpClient is not expanding some of the headers. I tried adding a response interceptor (as shown below) and getAllHeaders returned all the headers I wanted. Thanks for reading my question!
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: ", "name: " + header.getName()); Log.e("HTTP: ", "value: " + header.getValue()); } } });