2012-05-23 5 views
0

У меня есть клиент, который отправляет некоторые данные на наш сервер с помощью метода http POST. Наш сервер - смола 3.0 с java. Когда я отправляю ответ, сохранены ли данные или нет, длина содержимого ответа не задана. клиент использует библиотеку curl (обертка php поверх нее), и они получают длину содержимого как 0. Когда я пытаюсь отправить форму через браузер на наш сервер на том же URL-адресе, он работает и отображается ответ.Длина содержимого 0 в ответе http post в смоле 3.0

Я попытался использовать Apache HttpClient для отправки данных через postmethod, и я получил длину содержимого как -1, но я получил полный ответ. Я не могу понять, где проблема. Кроме того, я сделал несколько google и обнаружил, что смола делает некоторую кодированную кодировку при отправке ответа. Но я думаю, что он делает это также для метода GET. Но для метода GET мой клиент получает длину контента и также может получить ответ. Нужна помощь с этим.

ответ

0

«Content-Length» - это заголовок в ответе, который предупреждает клиента о том, насколько велика будет реакция. Это не фактическая длина потока.

Вы можете установить его значение с помощью response.setContentLength (...); в вашем сервлете.

+0

Когда я устанавливаю длину содержимого вручную, я получаю сообщение об ошибке «Ошибка IllegalStateException» пыталась записать байты 30052 с длиной до 30036. Есть ли что-то, что нужно сделать с кодировкой смолы? – Shwetanka

+0

При использовании «пакетного» кодирования передачи вы должны отрегулировать значение Content-Length, как определено ПОСЛЕ того, как были применены любые кодировки передачи. –