我有奇怪的情况
我有 HTTP 响应,我尝试将其转换为字符串,问题是第一次它正常工作,但第二次 InputStream 数据为空
我只有response1中的数据
InputStream is = entity.getContent();
String response1 = IOUtils.toString(is, "utf-8"); // Here every thing is fine
String respons2 = IOUtils.toString(is, "utf-8"); // Here the response2 is empty
and is (InputStream) holding no data
这里出了什么问题我需要能够将数据保存在 InputStream 中以供将来在代码中使用
然而,在检查 javadoc 时,您的需求不是很清楚httpEntity.getContent https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/HttpEntity.html#getContent()我看到以下内容:
返回实体的内容流。可重复的实体是
期望为每次调用创建一个新的 InputStream 实例
这种方法,因此可以多次使用。实体
不可重复的预计会返回相同的 InputStream
实例,因此不能被多次消耗。
您是否通过调用检查 httpEntity 是否可重复
httpEntity.isRepeatable()
如果属实,您可以执行以下操作:
InputStream is = entity.getContent();
String response1 = IOUtils.toString(is, "utf-8");
// retrieve a new instance of inputStream
is = entity.getContent();
String response2 = IOUtils.toString(is, "utf-8");
最后但并非最不重要的一点(因为我不知道您的确切需求),如果实体能够多次生成其数据,则前面的代码将会有所帮助,但您仍然应该评估以下之间的成本:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)