У меня есть сервер, использующий пружинную аутентификацию «запомнить меня», на которую я вхожу, используя Android DefaultHttpClient в методе POST.
Я могу успешно войти в систему и даже получить созданные файлы cookie сеанса (в моем случае файл cookie jsessionid и весенняя защита помнят меня).
Но странная вещь после выполнения метода POST, как
mResponse = mDefaultHttpClient.execute(mHttpPost)
Я могу получить куки, но только с помощью метода getCookieStore в моем DefaultHttpClient, как
mDefaultHttpClient.getCookieStore()
без использования метода getAllHeaders объекта HttpResponse
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());
Здесь я получаю некоторые заголовки (Сервер, X-powered-By, Дата, Тип контента, Длина контента), но не заголовок Set-Cookie или несколько других (Access-control-Allow- * и т. Д.)
Спасибо за любую помощь!
ОБНОВЛЕНИЕ: похоже, что 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: ", "name: " + header.getName());
Log.e("HTTP: ", "value: " + header.getValue());
}
}
});