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

Другие вопросы по тегам