JAX-RS: на стороне клиента: перехват перенаправления до выполнения перенаправлений

#redirect #jersey #jax-rs

#перенаправление #джерси #jax-rs

Вопрос:

Я пытаюсь реализовать «обработчик / фильтр перенаправления» на стороне клиента JAX-RS (Джерси). Ожидается, что этот обработчик будет вызван до того, как произойдет фактическое перенаправление Jersey.

До сих пор я мог найти, чтобы отключить последующее перенаправление и реализовать собственный фильтр перенаправления, но это означает, что я должен реализовать полную обработку перенаправления, включая циклы обработки или другие крайние случаи, которых я пытаюсь избежать и хочу полагаться на реализацию Джерси.

Я только хочу добавить / изменить заголовок или другие параметры внутри запроса до того, как произойдет фактическое перенаправление. Также есть только несколько перенаправлений, которыми мы хотим управлять, в то время как другие перенаправления работают как есть.

Отключение перенаправления:

 ClientBuilder
                .newBuilder()
                .withConfig(new ClientConfig(clientConfig))
                .property(ClientProperties.FOLLOW_REDIRECTS, false)
                .build();
 

Пример обработчика перенаправления:

         Response resp = requestContext.getClient().target(responseContext.getLocation()).request()
                .method(requestContext.getMethod());
        responseContext.setEntityStream((InputStream) resp.getEntity());
        responseContext.setStatusInfo(resp.getStatusInfo());
        responseContext.setStatus(resp.getStatus());
 

Есть ли какие-либо указатели или ссылки, которые я могу использовать для перехвата перенаправления?

Комментарии:

1. К сожалению, перенаправление происходит на более низком уровне, чем Джерси. На нижнем уровне есть соединители, и эти соединители обрабатывают перенаправление. Соединитель по умолчанию использует HttpURLConnection . Свойство, которое вы установили с помощью Jersey, чтобы не следовать перенаправлениям, просто перенаправляется на HttpURLConnection (который настраивается для следования или не следования перенаправлениям), который обрабатывает перенаправление.