Клиент Джерси: регистрация HTTP-перенаправлений - PullRequest
1 голос
/ 03 марта 2020

Я использую JAX-RS с Джерси. При отправке запроса POST в API я получаю 302, и Джерси следует автоматически, что приводит к 403. Однако в моем журнале я вижу только неудачные ответы:

INFO Rest-Request:  POST http://[Jenkins-IP]/job/RestTestingArea/job/testJob/doDelete
INFO Rest-Response: POST 403 http://[Jenkins-IP]/job/RestTestingArea/job/testJob/doDelete

Я определил, что между запросом и ответом происходит перенаправление, потому что, когда я отключаю перенаправления, выходные данные журналирования изменяются следующим образом:

INFO Rest-Request:  POST http://[Jenkins-IP]/job/RestTestingArea/job/testJob/doDelete
INFO Rest-Response: POST 302 http://[Jenkins-IP]/job/RestTestingArea/testJob/doDelete

Есть ли какой-либо способ фактически зарегистрировать эти перенаправления, кроме переадресации перенаправлений вообще и выполнения второй все сам? Регистрация:

public class LoggingFeature implements ClientRequestFilter, ClientResponseFilter
{
  private final Logger logger;

  public LoggingFeature(Logger log)
  {
    this.logger = log;
  }

  @Override
  public void filter(ClientRequestContext requestContext) throws IOException
  {
    try
    {
      logger.info(String.format("Rest-Request:  %s %s", requestContext
          .getMethod(), requestContext.getUri()));
    }
    catch (Exception ex)
    {
      logger.warn("LoggingFeature: ", ex);
    }
  }

  @Override
  public void filter(ClientRequestContext requestContext,
      ClientResponseContext responseContext) throws IOException
  {
    try
    {
      logger.info(String.format("Rest-Response: %s %d %s", requestContext
          .getMethod(), responseContext.getStatus(), requestContext.getUri()));
    }
    catch (Exception ex)
    {
      logger.warn("LoggingFeature: ", ex);
    }
  }
}

Запрос:

    HttpAuthenticationFeature auth = HttpAuthenticationFeature.basicBuilder()
        .credentials(username, token)
        .build();
    Client client = ClientBuilder.newBuilder()
        .register(auth)
        .register(new LoggingFeature(LOG))
        .build();
    WebTarget deleteTarget = client.target("http://[Jenkins-IP]/job/RestTestingArea/job/testJob/doDelete").    
    Response response = deleteTarget.request()
        .post(null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...