浏览器无法显示基本的http服务器响应

时间:2015-08-13 00:24:18

标签: java http http-headers httpresponse

有创建基本http服务器的任务。我已经到了要求你发送文本回复的地步,如果你转到http://localhost:8080/应该在你的浏览器中显示,但我只是得到一个页面无法显示错误。我认为它必须与我发送的响应格式有关,但我无法得到它。任何帮助将不胜感激。

import java.net.*;
import java.io.*;
import java.util.*;

class HttpServer{
    public static void main(String[] args){
        try{
            ServerSocket ss = new ServerSocket(8080);
            while(true){
                HttpServerSession sesh = new HttpServerSession(ss.accept());
                sesh.start();
            }
        }catch(IOException e){
            System.err.println("IOException");
        }
    }
}

class HttpServerSession extends Thread {
    private Socket client;
    public HttpServerSession(Socket client){
        this.client = client;
    }

private void println(BufferedOutputStream bos, String s) throws IOException {
    String news = s + "\r\n";
    byte[] array = news.getBytes();
    for(int i = 0; i < array.length; i++){
        bos.write(array[i]);
    }
    return;
}

public void run(){
    try{
        InetAddress clientIP = client.getInetAddress();
        System.out.println("We just got a message! " + clientIP.getHostAddress());
        BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
        String request = reader.readLine();
        System.out.println(request);
        String[] parts = request.split(" ");
        if(parts.length == 3){
            BufferedOutputStream bos = new BufferedOutputStream(client.getOutputStream());
            String filename = parts[1].substring(1);
            if(parts[0].equals("GET")){
                while(true){
                    String line = reader.readLine();
                    System.out.println(line);
                    if(line == null || line.equals("")){
                        break;
                    }
                }
                println(bos, "OK");
                println(bos, "");
                println(bos, "Hello World");
            }
        }
        client.close();
    }catch(Exception e){
        System.err.println("Exception in thread");
    }
}

}

1 个答案:

答案 0 :(得分:0)

原来我只需要清空BufferedOutputStream