Чего мне не хватаетЯ хочу проверить код ответа http Akka перед обработкой результата JSON - PullRequest
0 голосов
/ 29 марта 2019

Я новичок в 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 unResult;
            });
            return null;
        })
        .exceptionally(t -> {
            log.error("Exception occurred: " + t.getMessage());
            return null;
        });


        return result;
    }

1 Ответ

0 голосов
/ 31 марта 2019

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

...