Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重头戏2.6:在自定义http操作中获取响应正文_Java_Http_Playframework_Playframework 2.6 - Fatal编程技术网

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

我很难得到结果,我的问题归结为不理解物化器,特别是如何实例化它。你能举例说明吗?