Отправка ответа об ошибке с помощью com.sun.net.httpserver.HTTPServer

#java #com.sun.net.httpserver

#java #com.sun.net.httpserver

Вопрос:

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

 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:

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

Комментарии:

1. Спасибо. TBH Я буду отправлять большой объем данных, используя фрагментарный подход, поэтому я предполагаю, что с этим мне придется иметь дело, возможно, используя верхний и нижний колонтитулы вокруг моего набора данных, чтобы позволить клиенту обнаружить условие ошибки.