Httpclient обработчик перенаправления
Я пытаюсь вызвать веб-сервер, который использует относительные перенаправления URL для некоторых вызовов. Это, конечно, не работает с DefaultHttpClient, поскольку он не обрабатывает его как относительный URL. Я дошел до реализации RedirectHandler в попытке перехватить перенаправление и добавить базовый вызов, но я не могу понять, как получить местоположение перенаправления.
С помощью следующего метода, как мне узнать, куда меня перенаправляют? Я не могу найти ни полей ни в ответе, ни в контексте, в которых есть то, что мне нужно, и я не знаю, где еще искать.
public URI getLocationURI(HttpResponse response, HttpContext context)
2 ответа
Посмотрите здесь: HttpClient 4 - как перехватить последний URL перенаправления
я бы попробовал getStatusLine()
для начала.
Мое решение состоит в том, чтобы прочитать заголовки местоположения и следовать им. Это помогло мне:
if (statusCode != HttpStatus.SC_OK) {
Header[] headers = response.getHeaders("Location");
if (headers != null && headers.length != 0) {
String newUrl = headers[headers.length - 1].getValue();
// call again the same downloading method with new URL
return downloadBitmap(newUrl);
} else {
return null;
}
}
Больше в моем посте - следите за 302 редиректами с AndroidHttpClient