2
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 はブラウザーに何も出力しません。理由はありますか?

4

2 に答える 2

2

いくつかの問題があります。最初:HTTP標準によると:

リクエストラインとヘッダーはすべてで終了する必要があります(つまり、キャリッジリターンの後にラインフィードが続きます)。

したがって、行を終了するには「\ r\n」文字を送信する必要があります。

また、「\n」文字でprintln関数を使用しています。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();を忘れないでください。

于 2012-01-09T16:43:03.290 に答える
2

ストリームをフラッシュしようとしましたか? 他の情報がなければPrintStream、文字を保存しているが、実際には文字を出力していないと推測しています(効率のために)。

詳細については、 flush()を参照してください。

于 2012-01-09T16:21:54.163 に答える