2013-05-30 87 views
0

會是什麼一個是Java等同於以下相當於Java到C#的StreamReader.ReadToEnd()

// C# 
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
{ 
    String responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); 
    .... 
} 

目前我有

//Java 
HttpResponse response = httpclient.execute(request); 

InputStream responseBody = response.getEntity().getContent(); 
+1

所以你想擁有「一次性」的內容 - 你想要什麼?我們對此問題使用了Apache IOUtils.toString(InputStream)方法,請參閱此JavaDoc https://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/IOUtils.html – PepperBob

+0

是的,獲取「一去不復返」中的所有內容都是這個意圖。這應該工作。 – JME

回答

2

Apache的http客戶端,我認爲你正在使用,自帶一個EntityUtils用於從方法獲取字符串的類。

此方法使用響應中指定的字符編碼。如果需要不同的編碼,則有可用的重載。

HttpResponse response = httpclient.execute(request); 
String responseString = EntityUtils.toString(response.getEntity); 
1

這可能是有點長,但如果你沒'不想使用第三方庫,你可以這樣做:

InputStream stream = new FileInputStream("file"); 
byte[] b = new byte[stream.available()]; 
stream.read(b); 
String file = new String(b); 
+2

最好在從字節到字符時指定編碼。 – bdkosher

+2

這看起來不錯。但是,我可以問一下,如果它是來自套接字連接的輸入流,它確實可以確實讀到InputStream的末尾? – PepperBob

+2

'stream.available()'可能包含或可能不包含數字,該數字恰好是要讀取的數量。這不是一個可靠的技術。 –