我在我的应用程序中使用 Apache HttpClient 4.2.3。我们存储 HTTP 调用的响应,如下所示:
HttpResponse httpResponse = (DefaultHttpClient)httpClient.execute(httpRequest);
响应正文是 4.x API 中的 InputStream:
InputStream responseStream = httpResponse.getEntity().getContent();
我的问题是我需要在应用程序的各个点将响应正文作为字符串和字节 [] 读取。但是 Apache 使用的 InputStream 是一个 EofSensorInputStream,这意味着一旦我到达流 EOF,它就会关闭。无论如何我可以多次获取字符串和字节[]表示而不关闭流?
我已经尝试将字节数组包装在新的 ByteArrayInputStream 中并将其设置为请求正文,但它不起作用,因为我的响应正文可以达到几场演出。我也试过这个,但我注意到原始响应流仍然关闭。
欢迎任何指点。
编辑:在相关说明中,如果我可以在不消耗流或通过反转消耗的情况下找到 InputStream 的长度,那也很棒。