Как правильно отправить HTTP-ответ клиенту на Java

Я в процессе создания сервера для отображения HTML-страницы в качестве оценки колледжа. Все файлы хранятся локально. Использование Firefox для подключения к серверу (chrome, кажется, блокирует изображения).

Приведенный ниже код прекрасно работает, если я ввожу HTTP-ответ в сам html-файл, который передается (я набираю ‘HTTP / 1.1 200 OK’ в начале HTML-файла)

                {   

                    byte[] pageToBytes = Files.readAllBytes(webContent.toPath());

                    os.write(pageToBytes); 
                    os.flush();
                    os.close();                  

                }

Но если я попытаюсь отправить ответ HTTP сначала, а затем HTML после, он отказывается загружать изображения в мой указанный в моем HTML-коде.

Вот код я пытаюсь выяснить проблему с:

                 {  

                    byte[] pageToBytes = Files.readAllBytes(webContent.toPath());


                    String HttpOK = "HTTP/1.1 200 OKnr";

                    os.write(HttpOK.getBytes());                        
                    os.write(pageToBytes); 
                    os.flush();
                    os.close();                  

                }

Любые идеи будут высоко оценены 🙂

2 ответа

  1. Вы должны прочитать о HTTP-запросах, когда браузер делает запрос открытым канал связи между сервером и клиентом, который является потоком, в который вы пишете, этот канал закрывается, как только клиент получил ответ.

    В коде вы отвечаете один раз, но во второй раз поток уже закрыт, поэтому тело ответа никогда не достигает клиента. Кроме того, сервер автоматически отправляет 200 код, когда нет ошибки или код говорит иначе.

  2. Так как вы пытаетесь сделать http-сервер, хорошо посмотреть здесь
    он объясняет, как обрабатывать http-запрос и ответ.