jax rs客户端阻塞输入流读取

时间:2015-06-29 18:50:07

标签: java rest jax-rs inputstream

我正在开发一个JAX-RS客户端应用程序(使用resteasy-client 3.0.8Final),它应该读取由REST服务流式传输的(文本)输出,并在控制台上逐行打印。

对服务的手动curl调用确认输出按预期正确地逐行流式传输。但是,当我尝试从java客户端读取它时,看起来我只能在流关闭并且对服务的调用完成后才从输入流中读取(并因此显示)。换句话说,如果服务每隔一秒左右发出一行输出,而不是每秒显示一行,我必须等到对服务的调用完成,然后立即显示所有行。这是处理响应的代码:

final InputStream is = (InputStream)response.readEntity(InputStream.class);
final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new BufferedInputStream(is)));

try
{
    String line;

    while ((line = bufferedReader.readLine()) != null)
    {
        System.out.println(line);
        System.out.flush();
    }
}
catch (Exception e)
{
    throw new IllegalStateException(e);
}

我希望调用readLine来阻止并等待新行变为可用,但它似乎在等待InputStream被关闭(在另一个线程中?),但是我的理解显然是有缺陷的。

有人看到我错过了什么吗?

0 个答案:

没有答案