Тестирование http-соединений - PullRequest
1 голос
/ 02 октября 2019

Я делаю приложение с весенней загрузкой, в котором я хочу включить повторные попытки для определенных http-соединений. Я немного запутался в том, как это приложение должно сравнивать код состояния и запускать функцию для выполнения повторной попытки. Любое понимание этого было бы полезно, я предполагаю, что есть функция, которая извлекает коды состояния, но я не могу найти ее. Ниже мой класс, который я создал:

открытый класс HttpFailedConnectionRetryPolicy extends ExceptionClassifierRetryPolicy {

@Value("SomeValue")
private Integer maxAttempts;

public HttpFailedConnectionRetryPolicy() {
    final NeverRetryPolicy doNotRetry = new NeverRetryPolicy();
    final SimpleRetryPolicy simpleRetryPolicy = new SimpleRetryPolicy();
    simpleRetryPolicy.setMaxAttempts(maxAttempts);

    this.setExceptionClassifier(new Classifier<Throwable, RetryPolicy>() {
        @Override
        public RetryPolicy classify(Throwable classifiable) {
            if (condition) {
                return simpleRetryPolicy;
            }
            return new NeverRetryPolicy();
        }
    });
}

}

1 Ответ

1 голос
/ 02 октября 2019

Если ваше исключение имеет тип HttpStatusCodeException, вы можете проверить e.getStatusCode ()

ваше состояние должно быть

public RetryPolicy classify(Throwable classifiable) {
        if (classifiable instanceof HttpStatusCodeException) {
            if(((HttpStatusCodeException)classifiable).getStatusCode().value!=404)
            return simpleRetryPolicy;
        }
        return new NeverRetryPolicy();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...