Мы видим, что вы повторно используете установленное соединение для отправки запроса POST и что, как вы сказали, ответ приходит без строки состояния и заголовков .
после того, как Tomcat получает запрос, он просто возвращает только тело ответа.
Не совсем.Он начинается с 5d , который, вероятно, является размером чанка , и это означает, что последний "полный" ответ (с строка состояния и заголовки ) полученное из этого соединения содержало заголовок « Transfer-Encoding: chunked ».По какой-то причине ваш сервер по-прежнему считает, что предыдущий ответ не завершен к тому времени, когда он начинает отправлять этот новый ответ на ваш последний запрос.
Отсутствующий фрагмент выглядит подтвержденным, поскольку на снимке экрана не отображается last-chunk (значение = 0), заканчивающий предыдущий запрос.Обратите внимание, что последний ответ заканчивается последним блоком (последний показанный байт равен 0).
Что вызывает это?Предыдущий ответ технически не считается полностью ответившим.Это может быть ошибка в Tomcat, вашей библиотеке веб-сервиса, вашем собственном коде.Возможно, вы отправляете ваш запрос слишком рано, до того, как предыдущий был полностью отвечен.
Не пропущены ли какие-либо байты, если вы сравниваете размеры чанков с тем, что фактически отправляется клиенту?Все буферы очищены?Остерегайтесь также конца строк (только CRLF и LF).
Еще одна причина, о которой я думаю, если ваш ответ содержит какой-то ввод пользователя, полученный из запроса, вы можете столкнуться с Разделение HTTP .
Возможные решения.
Стоит попробовать отключить кодирование по частям на уровне вашей библиотеки, например, с помощью Axis2 проверьте Транспорт HTTP .
При повторном использовании соединения проверьте код своего клиента, чтобы убедиться, что вы не отправляете запрос, прежде чем прочитаете весь предыдущий ответ (чтобы избежать наложения).
Дополнительная литература
RFC 2616 3.6.1 Кодирование передачи по частям