我根本不是Java程序员。我尽力不惜一切代价避免使用它,但是(在学校的意义上)我必须在课堂上使用它。老师要求我们使用Socket(),BufferedReader(),PrintWriter()和其他各种东西,包括BufferedReader()的readLine()方法。
基本上,这就是我遇到的问题。该文档明确指出,readLine应该在输入流的末尾返回null,但这不是正在发生的事情。
Socket link = new Socket(this.address, 80);
BufferedReader in = new BufferedReader( new InputStreamReader( link.getInputStream() ));
PrintWriter out = new PrintWriter( new PrintWriter( link.getOutputStream(), true ));
out.print("GET blah blah blah"); // http request by hand
out.flush(); // send the get please
while( (s=in.readLine()) != null ) {
// prints the html correctly, hooray!!
System.out.println(s);
}
而不是在HTML末尾结束,我得到了一个空行,一个0和另一个空行,然后下一个in.readLine()永远挂起。为什么?我的空在哪里?
我尝试了out.close()来看看是否Yahoo! 正在执行持久的http会话或其他操作(如果没有我们愿意做的标头,我认为这不会)。
我在网上找到的所有Java套接字示例似乎都表明while循环是正确的形式。我只是不了解足够的Java来调试它。