Я подключаюсь к своему приложению AppEngine с помощью библиотеки Apache HttpComponents. Чтобы аутентифицировать своих пользователей, мне нужно передать токен аутентификации по адресу регистрации приложения (http://myapp.appspot.com/_ah/login?auth=...)) и извлечь cookie из заголовка ответа. Однако страница входа в систему отвечает кодом состояния перенаправления и я не знаю, как помешать HttpClient выполнить перенаправление, что помешало мне перехватить cookie.
Кстати, фактический метод, который я использую для отправки запроса, приведен ниже.
private void execute(HttpClient client, HttpRequestBase method) {
// Set up an error handler
BasicHttpResponse errorResponse = new BasicHttpResponse(
new ProtocolVersion("HTTP_ERROR", 1, 1), 500, "ERROR");
try {
// Call HttpClient execute
client.execute(method, this.responseHandler);
} catch (Exception e) {
errorResponse.setReasonPhrase(e.getMessage());
try {
this.responseHandler.handleResponse(errorResponse);
} catch (Exception ex) {
// log and/or handle
}
}
}
Как мне остановить клиента от повторного перенаправления?
Спасибо.
Обновление
В соответствии с приведенным ниже решением, я сделал следующее после создания DefaultHttpClient client
(и перед передачей его методу execute
):
if (!this.followRedirect) {
client.setRedirectHandler(new RedirectHandler() {
public URI getLocationURI(HttpResponse response,
HttpContext context) throws ProtocolException {
return null;
}
public boolean isRedirectRequested(HttpResponse response,
HttpContext context) {
return false;
}
});
}
Более многословно, чем кажется, но не так сложно, как я думал.