まで、私は指定されたURLでWebページを読み込むプログラムを開発することになっています待ちますが、問題は、私はTCPだけを使用させていただいております、私は任意のHTTPライブラリを使用することは許されないのですということです。以下JavaのHTTP GET応答がタイムアウト
応答メッセージを読み取るコードである:
private static String readMultiline (BufferedReader inStr) {
String message="";
String line=readLine(inStr);
while (line != null) {
message += line + "\r\n";
line=readLine(inStr);
}
if (message.length() == 0) return null;
return message;
}
private static String readLine (BufferedReader inStr) {
String line = null;
try{
line = inStr.readLine();
} catch (IOException ioe) {
System.out.println("ERROR: Incoming packet could not be read properly.");
return null;
}
return line;
}
問題は、ヘッダと、ウェブページのコンテンツが完全に受信されることであるが、whileループは依然として「次の」行を待つ、これ存在しない。しばらくすると、タイムアウトが発生し、コードが続行されます。私が接続しようとしているサーバは "Connection:close"をしません。ファイルの最後をどのように検出できますか?
この宿題はありますか?なぜあなたはJava SDKに含まれているHTTPライブラリを使用できないのですか? – Perception
はい、宿題です。私が見る限り、HTTPライブラリーはストリームからの読み込みとほぼ同じように動作しますが、ファイルの終わりを検出できない限り、問題が発生します。 – kubuzetto