#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 Я буду отправлять большой объем данных, используя фрагментарный подход, поэтому я предполагаю, что с этим мне придется иметь дело, возможно, используя верхний и нижний колонтитулы вокруг моего набора данных, чтобы позволить клиенту обнаружить условие ошибки.