Установка сообщения об ошибке и тела сервлета

Я хочу написать сервлет, который будет возвращать HTTP-ответ следующим образом:

HTTP/1.1 500 <short custom message>
Content-Length: ...

<longer custom message>

Причина в том, что мне нужен программный клиент, чтобы иметь возможность обрабатывать ответное сообщение, чтобы получить конкретный ответ, но я также хочу заполнить тело ответа более подробным объяснением, чтобы его было легко найти с помощью браузера.

Теперь HttpServletResponse имеет sendError (int , String), который позволяет мне указать код ошибки и сообщение. В javadocs говорится только о том, что сообщение будет встроено в какую-то html-страницу, но ничего о настройке сообщения HTTP-ответа. После вызова этого метода вам не разрешается ничего писать в ответ. В моих тестах (с причалом) сообщение используется как для ответа http, так и для тела html, что бы меня устроило, за исключением того, что я хочу указать две разные строки и не думаю, что настройка сообщения HTTP-ответа гарантирована другой реализацией.

Существует также метод setStatus (int), который вы можете вызовите с помощью любого кода, а затем вы можете написать свое собственное тело html. Это близко, за исключением того, что вы не можете указать сообщение HTTP-ответа.

Наконец, есть метод setStatus (int, String), который действительно делает именно то, что я хочу, но он устарел из-за некоторой двусмысленности. Я предполагаю, что какие-то контейнеры сервлетов записывали сообщение в тело ответа и закрывали ответ.

Помимо использования устаревшего метода, я предполагаю, что здесь я облажался, но я ' Мне интересно, знает ли кто-нибудь еще какие-нибудь уловки?

9
задан Jeremy Huiskamp 7 October 2010 в 20:42
поделиться