我正在研究一个Web服务器(已完成),并且认为我会创建自己的基于文本的小浏览器,唯一的问题是我实际上无法让浏览器读取响应。这是代码:
import java.io.*;
import java.net.*;
class client
{
static Socket socket = null;
static BufferedReader in = null;
static PrintWriter out = null;
public static void main(String args[])
{
int fromServer;
try
{
socket = new Socket("localhost", 8001);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter( new BufferedOutputStream(socket.getOutputStream()));
out.println("GET /Library/WebServer/Documents/index.html.en HTTP/1.0");
out.flush();
while ((fromServer = in.read()) != -1)
{
System.out.write(fromServer);
System.out.flush();
}
}
catch (UnknownHostException e)
{
System.out.println("Unknown host");
}
catch (IOException e)
{
System.out.println("IO error");
}
}
}
答案 0 :(得分:1)
您还没有完成请求。你需要两个换行符,否则看起来你还在写出请求标题。
添加额外的println
,可能没问题,但由于HTTP指定了行结尾的CRLF,我实际上会使用print
而不是println
,并将\r\n
明确地放在每一行的末尾。
(我也避免使用PrintWriter
,个人 - 吞咽异常很糟糕......)