Чего мне не хватает. Я хочу проверить код ответа http Akka перед обработкой результата JSON

#java #akka

#java #akka

Вопрос:

Я новичок в Akka и java 8. Итак, я использую pipe для вызова этого метода для вызова службы REST. Все работает нормально, но хотелось бы проверить код ответа, прежде чем разархивировать json. или прервать, если код ответа равен!= 200. И правильно ли это со всеми этими возвращаемыми нулевыми результатами? ……..

Мой пример кода:

 
CompletionStage<HttpResponse> fetch(LoginUserRequest input) {
        CompletionStage<HttpResponse> result = null;
*some json code*

        result = http.singleRequest(HttpRequest.POST(url).withEntity(HttpEntities.create(ContentTypes.APPLICATION_JSON, jsonString)));


        result.thenCompose(response ->
        response.entity().toStrict(10000, materializer))
        .thenApply(entity -> {
            log.info("före");
            CompletionStage<UserResult> userResult = Jackson.unmarshaller(UserResult.class).unmarshal(entity, materializer);
            userResult.thenApply(unResult -> {
                requester.tell(new LoginUserResponse(unResult.getCredentials().getToken() != null, unResult.getCredentials().getToken()), self());
                return unResu<
            });
            return null;
        })
        .exceptionally(t -> {
            log.error("Exception occurred: "   t.getMessage());
            return null;
        });


        return resu<
    }

  

Ответ №1:

У вас есть код ответа для вашего response объекта выше. Таким образом, вы можете проверить это и действовать соответствующим образом. В вашем первом .thenApply возвращаемом значении null должно быть неправильным, поскольку результат userResult.thenApply не будет возвращен таким образом.