我使用Apache httpcomponents Java library提取網頁。連接結果後,我得到的是一個HttpEntity
,它有一個方法getContent()
,它返回一個InputStream
,並且還有一個方法writeTo()
寫入OutputStream。在httpclient中,將HttpEntity轉換爲字符串的最優雅/正確的方法是什麼?
我想將結果轉換爲字符串來提取信息。什麼是最優雅(和安全)的方式來做到這一點?
一些可能的解決方案:
- 寫入
ByteArrayOutputStream
,然後將這些字節轉換爲字符串用String構造 - 使用的InputStreamReader從流中直接讀取,並放入一個StringBuilder
這兩個都覺得有點難看。你會推薦選擇其中之一還是其他的?
我認爲這裏是正確的答案,圖書館提供了正是這個原因的EntityUtils類 – 2012-12-26 21:43:37
這種方法的問題是,如果你已經通過調用httpResponse.close()清理了資源並且想要獲得其他地方的實體的字符串表示,使用上面的代碼將導致拋出「java.net.SocketException:套接字關閉」異常。 – 2013-12-21 15:21:19