首页 > 解决方案 > 我错过了什么。我想在处理 JSON 结果之前检查 http Akka 的响应代码

问题描述

我是 Akka 和 java 8 的新手。所以我使用管道调用此方法来调用 REST 服务。一切正常,但想在解组 json 之前检查响应代码。或者如果响应代码是 != 200 则中止。所有这些返回 null 结果是否正确?...........

我的示例代码:


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;
    }

标签: javaakka

解决方案


您在response上面的对象上有响应代码。因此,您可以检查并采取相应措施。在您的 first.thenApply中,返回 null 应该是错误的,因为userResult.thenApply不会以这种方式返回结果。


推荐阅读