【发布时间】:2012-01-21 13:46:32
【问题描述】:
我应该开发一个程序来读取具有指定 URL 的网页,但问题是我不能使用任何 HTTP 库,我只能使用 TCP。
下面是读取响应消息的代码:
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;
}
问题是header和web页面内容都被完全接收了,但是while循环还在等待'next'行,不存在。过了一会儿,发生超时,代码继续。我尝试连接的服务器不执行“连接:关闭”。如何检测文件的结尾?
【问题讨论】:
-
这是作业吗?为什么会禁止您使用 Java SDK 中包含的 HTTP 库?
-
是的,这是一个家庭作业。尽管据我所知,HTTP 库在从流中读取时的工作方式几乎相同。只要它无法检测到文件的结尾,就会出现问题。