Web浏览器命令行程序

时间:2013-08-04 14:59:46

标签: java http

我正在研究一个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");
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您还没有完成请求。你需要两个换行符,否则看起来你还在写出请求标题。

添加额外的println可能没问题,但由于HTTP指定了行结尾的CRLF,我实际上会使用print而不是println ,并将\r\n明确地放在每一行的末尾。

(我也避免使用PrintWriter,个人 - 吞咽异常很糟糕......)