我在我的应用程序中使用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中,并将其设置为请求正文,但由于我的响应正文可能达到几千兆字节,因此它不起作用。我还尝试了this,但我注意到原始响应流仍然被关闭。
欢迎任何指针。
编辑:另外,如果我可以在不消耗流或通过反向消耗来找到InputStream的长度,那将非常好。