Java 重头戏2.6:在自定义http操作中获取响应正文
刚才,我问 答案基本上是使用Java 重头戏2.6:在自定义http操作中获取响应正文,java,http,playframework,playframework-2.6,Java,Http,Playframework,Playframework 2.6,刚才,我问 答案基本上是使用play.core.j.javaResultTextRactor。我现在正在升级到2.6,并且JavaResultTextRactor不再存在(或者至少不公开) 在游戏2.6中如何做到这一点 我确实找到了Result.body().ConsumerData,它似乎可以工作,但也附带了令人担忧的警告: 应谨慎使用此方法,因为如果源表示短暂流,则调用此方法后实体可能不可用 我假设,因为我是在一个动作中完成这项工作的,所以我可以调用ConsumerData,将所有数据放入一
play.core.j.javaResultTextRactor
。我现在正在升级到2.6,并且JavaResultTextRactor
不再存在(或者至少不公开)
在游戏2.6中如何做到这一点
我确实找到了Result.body().ConsumerData
,它似乎可以工作,但也附带了令人担忧的警告:
应谨慎使用此方法,因为如果源表示短暂流,则调用此方法后实体可能不可用
我假设,因为我是在一个动作中完成这项工作的,所以我可以调用ConsumerData,将所有数据放入一个局部变量中,对其进行处理,然后使用存储的数据返回一个新结果。只有在数据太大而无法放入内存的情况下,这才是失败的,这不是我目前所期望的。在Play 2.6中,仍然可以重新实现2.5功能。请查看从结果获取Json正文的示例:
public static JsonNode resultToJsonNode(final Result result, final long timeout, final Materializer mat)
throws Exception {
FiniteDuration finiteDuration = Duration.create(timeout, TimeUnit.MILLISECONDS);
byte[] body = Await.result(
FutureConverters.toScala(result.body().consumeData(mat)), finiteDuration).toArray();
ObjectMapper om = new ObjectMapper();
final ObjectReader reader = om.reader();
return reader.readTree(new ByteArrayInputStream(body));
}
我很难得到结果,我的问题归结为不理解物化器,特别是如何实例化它。你能举例说明吗?