Как получить размер ответа HTTP в Java (в байтах) - PullRequest
0 голосов
/ 14 марта 2012

У меня есть сервлет Java и соответствующие объекты HttpServletRequest / HttpServletResponse. Мне нужно выяснить размер в байтах ответа, возвращаемого клиенту. Простой вопрос, но на удивление сложный, и я не смог найти хороших примеров.

Прежде всего, у класса HttpServletResponse есть метод, который возвращает ServletOutputStream, но без информации о размере / длине.

HttpServletResponse.getOutputStream()  :  ServletOutputStream

Некоторые люди указывают на то, что Apache Commons '1010 * указывает на то, что вы можете "обернуть" или "переслать" это на основной вывод при использовании данных, в ответе не было фактического кода, и я не смог его получить работать. Любые решения с конкретными примерами кода будут оценены. Спасибо.

Сервлет все еще должен работать в обычном режиме, ему просто нужно фиксировать размер ответа в каждом цикле.

1 Ответ

4 голосов
/ 14 марта 2012

Поскольку ответ пишется непрерывно, у вас есть два варианта:

  • wrap HttpServletResponse для возврата вашей собственной OutputStream оболочки, которая, в свою очередь, считает записанные в ней байты
  • используйте кота Клапанный каротаж
...