PrintStream无法打印

时间:2012-01-09 16:19:51

标签: java printstream

in = new BufferedReader (new InputStreamReader(client.getInputStream()));
out = new DataOutputStream(client.getOutputStream());
ps = new PrintStream(out);

public void run() {
    String line;    

    try {
        while ((line = in.readLine()) != null && line.length()>0) {
            System.out.println("got header line: " + line);
        }
        ps.println("HTTP/1.0 200 OK");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    ps.println("Content-type: text/html\n\n");
    ps.println("<HTML> <HEAD>hello</HEAD> </HTML>");
}

程序运行没有错误,ps.println不会向浏览器打印任何内容。 知道为什么吗?

2 个答案:

答案 0 :(得分:2)

你试过冲洗流吗?没有任何其他信息,我猜你的PrintStream正在存储字符,但实际上并没有输出它们(为了效率)。

有关详细信息,请参阅flush()

答案 1 :(得分:2)

你有几个问题。 第一:根据HTTP标准:

  

请求行和标题必须全部以(即回车后跟换行符)结束。

所以,你需要发送&#34; \ r \ n&#34;终止行的字符。

此外,您正在使用println函数&#34; \ n&#34;字符。 Println还会在字符串的末尾添加换行符。

所以你需要改变这些行:

ps.println("HTTP/1.0 200 OK");
...
ps.println("Content-type: text/html\n\n");

ps.print("HTTP/1.0 200 OK\r\n")
ps.print("Content-type: text/html\r\n\r\n");

而且,不要忘记flush();