Отправка сообщения об ошибке с помощью com.sun.net.httpserver.HttpServer - PullRequest
2 голосов
/ 06 октября 2011

Я опытный программист на Java, но начинающий веб-разработчик. Я пытаюсь собрать простой веб-сервис, используя класс HttpServer, который поставляется с JDK 1.6. Из приведенных мною примеров типичный код из метода HttpHandler handle будет выглядеть примерно так:

Headers responseHeaders = exchange.getResponseHeaders();
responseHeaders.set("Content-Type", "text/plain");
exchange.sendResponseHeaders(200, 0);

OutputStream responseBody = exchange.getResponseBody();
responseBody.write(createMyResponseAsBytes());
responseBody.close();

Мой вопрос: что произойдет, если я отправлю заголовок ответа, чтобы указать успех (т. Е. Код ответа 200), и, возможно, начну потоковую передачу данных, а затем возникну исключение, которое потребует отправки кода ответа "внутренняя ошибка сервера" вместе с какое-то содержание ошибки? Другими словами, какое действие я должен предпринять, учитывая, что я уже отправил частичный «успешный» ответ клиенту в тот момент, когда я столкнулся с исключением?

1 Ответ

2 голосов
/ 06 октября 2011

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

...