Нет.
Сервлет не предоставляет такого API, и его было бы сложно реализовать, потому что (в основном) вы не можете читать одни и те же данные дважды из Socket. Получить информацию заголовка несложно, но необработанные заголовки невозможно захватить в контейнере сервлета. Чтобы получить тела, вам нужно захватить их самостоятельно, когда ваше приложение читает / записывает соответствующие потоки.
Ваши альтернативы:
Напишите свою собственную реализацию протокола HTTP на стороне сервера. (Вероятно, не подходит для вашего приложения.)
Вы можете получить необходимую информацию заголовка с помощью фильтров, хотя они не показывают необработанные запросы.
Некоторые контейнеры сервлетов имеют ведение журнала заголовка запроса; например в Tomcat есть зверь RequestDumperValve, который вы можете настроить в своем файле "server.xml".
Реализация прокси-сервера, который находится между клиентом и вашим «реальным» сервером.
Пакет нюхает.
Что лучше всего зависит от того, чего вы действительно пытаетесь достичь.
Followup:
Если "заголовок" находится в заголовках, подход RequestDumperValve, вероятно, является лучшим для отладки. Перейдите в файл «$ CATALINA_HOME / conf / server.xml», найдите «RequestDumperValve» и раскомментируйте элемент. Затем перезапустите Tomcat. Вы также можете сделать то же самое в файле context.xml вашего веб-приложения. Сброшенные запросы и ответы по умолчанию попадают в «logs / catalina.out». Обратите внимание, что это даст МНОГО выходных данных, поэтому вы не хотите делать это в производстве ... кроме как в крайнем случае.
Если ошибка содержится в содержимом запроса POST или PUT, вам необходимо изменить приложение, чтобы сохранить копию содержимого при его считывании из потока ввода. Я не знаю никаких ярлыков для этого.
Кроме того, если вы хотите оставить вход в систему на длительное время, вам, вероятно, придется решить проблему самостоятельно, вызвав HttpServletRequest API и заголовки журналов и т. Д. RequestDumperValve генерирует слишком много выходных данных и выводит ВСЕ запросы не только плохие.