java - 我错过了什么。我想在处理 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;
}
解决方案
您在response
上面的对象上有响应代码。因此,您可以检查并采取相应措施。在您的 first.thenApply
中,返回 null 应该是错误的,因为userResult.thenApply
不会以这种方式返回结果。
推荐阅读
- regex - 正则表达式匹配 JSON 列表中的特定键
- python - 有没有办法用 Folium 增加 18 层以上的缩放?
- javascript - 按另一个数组中的项目过滤javascript数组映射?
- bash - 如何在bash中将另一个变量附加到变量的每一行?
- spring-boot - @AutoConfigureMockMvc 如何设置消息转换器
- javascript - QuerySelector 从类名返回 Null - 您可以在后台脚本中从内容脚本中引用类名吗?
- android - 如何在退出 .aab 的某些资源发生更改后重建 .aab 文件
- ios - UIView 没有出现
- pandas - 熊猫毫秒和分钟频率别名“L”和“T”背后的基本原理
- angular - 使用 ngx-translate 翻译 Angular