| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Работа с сетью > Tomcat и Content-length:0 |
| Автор: danilkus 10.12.2007, 16:48 |
| Задача такова, что нужно обработать Post запрос в котором есть данные, но битый заголовок. Он отличается от обычного тем, что в нем Content-Length: 0. Все остальные поля правильные. Content-type: multipart/form-data. Принимаю этот запрос сервлетом, но при попытке получить из HttpServletRequest InputStream обнаруживаю, что данных в нем нет. Запрос генерю самописным генератором, пишу прямо в сокет. При попытке послать аналогичный запрос, но с правильным Content-Length - все замечательно. Задача научиться обрабатывать запросы с такой неправильной длинной корректно. Подозреваю, что Tomcat "обрезает" поток согласно заголовку. В кодах томката поковырялся, но они для меня, если честно, темный лес. Какие будут идеи? |
| Автор: COVD 10.12.2007, 17:13 | ||
"обрезает" согласно протоколу http, который предписывает методу пост сначала отправлять размер данных в хедере, потом сами данные. Сервера в интернете, которые соблюдают протокол, скорее всего не пересылают данные, обнаружив нулевую длину. Можно посмотреть проект Comet в апаче. Там фиксированный размер запроса каким-то образом обходится именно ценой отступления от требований протокола. Возможно, размер данных устанавливается максимальным. |
| Автор: danilkus 10.12.2007, 17:17 |
| Сервера в интернете то да. Но мне нужно решить задачу в локальных условиях. Запрос идет напрямую от моего клиента на томкат. Как заставить не обрезать? |
| Автор: COVD 10.12.2007, 18:41 |
| модифицировать томкат, чтобы он определял конец данных не на основании длины, указанной в хедере, а по другому признаку. или модифицируйте более простой сервер - http://elonen.iki.fi/code/nanohttpd/ например (там все в одном файле). |
| Автор: ivg 10.12.2007, 18:54 |
А что бы клиента не поправить? |
| Автор: danilkus 10.12.2007, 18:54 |
| Собственно я и ожидал здесь встретить знатока томката, который бы подсказал где и что там нужно модифицировать. Версия томката 1.6 Добавлено через 3 минуты и 50 секунд Самописный клиент потому, что такой запрос никакой "правильный" клиент не выдаст. Мне нужно не привести запрос к правильному виду, а научиться обходиться с не правильными запросами. Такова уж задача. Если интересно такой запрос выдает ИЕ7.0 при некоторых обстоятельствах |
| Автор: danilkus 10.12.2007, 19:10 | ||
Если бы я точно знал, конечно бы поделился. Проблема в том, что определенная (именно одна) версия ИЕ 7 посылает такой заголовок после непродолжительного простоя между запросами. Версию обновить возможности нет. |
| Автор: COVD 10.12.2007, 19:19 | ||
у вас там наверное javascript периодически что-то посылает и посылает не правильно |
| Автор: danilkus 11.12.2007, 10:24 |
| Javascript конечно есть, но он работает не периодически, а по клику пользователя и ничего кроме form.submit не делает. Возможно виноват и JS вернее его интепретация этой версией ИЕ так как в ИЕ 6 и даже в других версиях ИЕ 7 такого не проявляется. |
| Автор: AlexeyVorotnikov 11.12.2007, 11:17 |
| Скорее всего, без модификации исходного кода Tomcat'а, застваить его работать неправильно невозможно. |