格式球衣文档:
用ChunkedOutput编写块很简单,您只需调用方法write()即可将一个块恰好写入输出。通过输入读数,它会稍微复杂一些。除非开发人员告知,否则ChunkedInput不知道如何区分字节流中的块。为了定义自定义的块边界,ChunkedInput提供了注册ChunkParser的可能性,该块从输入流中读取块并将它们分开。Jersey提供了几种块解析器实现,并且您可以根据需要实现自己的解析器来分离块。在上面的示例中,
使用Jersey 提供的默认解析器,该解析器 根据 r n分隔字符序列的存在来分隔块 。
因此,您的服务器必须使用 r n分隔多个块,或者您必须注册ChunkParser。
假设您有一个常量完成每个块,您可以尝试:
Client client = ClientBuilder.newClient();//2 is to increase amount of data and 3(seconds) is for time b/w chunked output ,can be changed final Response response = client.target("http://jerseyexample-ravikant.rhcloud.com/rest/jws/streaming/2/3").request() .get(); final ChunkedInput<String> chunkedInput = response.readEntity(new GenericType<ChunkedInput<String>>() { }); chunkedInput.setParser(ChunkedInput.createParser(BOUNDARY)); String chunk; while ((chunk = chunkedInput.read()) != null) { System.err.println("Next chunk received: " ); System.out.println(chunk); }
而BOUNDARY是每个块的终结字符串。您编辑中的in.readLine解决方案将按每个换行符分解“块”,即使一个块包含 n,也将被解释为2个块。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)