本文介紹了將IOUtils.toString與HttpEntity.getContent()結(jié)合使用的Java將InputStream轉(zhuǎn)換為空的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一種奇怪的感覺
我有一個HTTP響應,我嘗試將其轉(zhuǎn)換為字符串,問題是第一次它工作,但第二次InputStream數(shù)據(jù)為空
而且我只有回復1的數(shù)據(jù)
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中保存數(shù)據(jù)以供將來在代碼中使用
推薦答案
您的需求不是很清楚,但是,在檢查javadochttpEntity.getContent時,我看到了以下內(nèi)容:
返回實體的內(nèi)容流。可重復實體包括
希望為每次調(diào)用創(chuàng)建一個InputStream的新實例
并因此可以被多次使用。實體
不可重復的,則應返回相同的InputStream
實例,因此不能多次使用。
您是否通過調(diào)用
來檢查HTTPEntity是否可重復
httpEntity.isRepeatable()
如果為True,您可以執(zhí)行以下操作:
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");
最后但并非最不重要的一點(因為我不知道您的確切需求),如果實體能夠多次生成其數(shù)據(jù),則前面的代碼將有所幫助,但您應該評估以下兩次之間的成本:
使用一次數(shù)據(jù)并將其保存在字符串中
多次使用數(shù)據(jù)
這篇關(guān)于將IOUtils.toString與HttpEntity.getContent()結(jié)合使用的Java將InputStream轉(zhuǎn)換為空的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,