我試圖使用Java,僅使用的Java Socket編程(而不是的Apache HTTP客戶端或任何其他API) 寫這樣程序的捲曲我想擁有的選項顯示整個或唯一的響應正文,以便我向用戶索取請求。目前,想出了下面的代碼:Seprating Get請求響應主體在Java Socket編程
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String t;
while ((t = br.readLine()) != null) {
if (t.isEmpty() && !parameters.isVerbose()) {
StringBuilder responseData = new StringBuilder();
while ((t = br.readLine()) != null) {
responseData.append(t).append("\r\n");
}
System.out.println(responseData.toString());
parameters.verbose = false;
break;
} else if(parameters.isVerbose())// handle output
System.out.println(t);
}
br.close();
在詳細選項上,它工作快速,顯示了整個身體的反應,在不到一秒鐘。但是當我想知道消息的正文時,需要花費很多時間(大約10秒)才能發佈消息。 是否有人知道如何以更快的速度處理它? 謝謝。
只是一個註釋:代碼的結構是很奇怪的,因爲你消耗在內部循環的整個流,因此,外循環是在非詳細情況沒用。你也可以修改你的變量名('s'和't'不是明確的名字)。 – Dici
難道是冗長的開關在你的代碼中的另一個地方是活躍的?看起來你在一個案例中發送了一個像「Connection:close」這樣的頭文件,但在另一個案例中卻沒有。 – blafasel
@blafasel我有完全相同的數據,只是一個布爾值差異試了一下。當我印刷整個東西時,它可以完美快速地工作。但是,只處理數據時,它變得非常慢! – Fezo