Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Tomcat и Content-length:0, обработка неправильного запроса сервлето 
:(
    Опции темы
danilkus
Дата 10.12.2007, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.12.2007

Репутация: нет
Всего: нет



Задача такова, что нужно обработать Post запрос в котором есть данные, но битый заголовок. Он отличается от обычного тем, что в нем Content-Length: 0. Все остальные поля правильные. 
Content-type: multipart/form-data.

Принимаю этот запрос сервлетом, но при попытке получить из HttpServletRequest InputStream обнаруживаю, что данных в нем нет.

Запрос генерю самописным генератором, пишу прямо в сокет. При попытке послать аналогичный запрос, но с правильным Content-Length - все замечательно.

Задача научиться обрабатывать запросы с такой неправильной длинной корректно.
Подозреваю, что Tomcat "обрезает" поток согласно заголовку.

В кодах томката поковырялся, но они для меня, если честно, темный лес.

Какие будут идеи?
PM MAIL   Вверх
COVD
Дата 10.12.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 11
Всего: 43



Цитата

Подозреваю, что Tomcat "обрезает" поток согласно заголовку.


"обрезает" согласно протоколу http, который предписывает методу пост сначала отправлять размер данных в хедере, потом сами данные. Сервера в интернете, которые соблюдают протокол, скорее всего не пересылают данные, обнаружив нулевую длину. 

Можно посмотреть проект Comet в апаче. Там фиксированный размер запроса каким-то образом обходится именно ценой отступления от требований протокола. Возможно, размер данных устанавливается максимальным.


Это сообщение отредактировал(а) COVD - 10.12.2007, 17:22
PM MAIL   Вверх
danilkus
Дата 10.12.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.12.2007

Репутация: нет
Всего: нет



Сервера в интернете то да. Но мне нужно решить задачу в локальных условиях. Запрос идет напрямую от моего клиента на томкат. Как заставить не обрезать?
PM MAIL   Вверх
COVD
Дата 10.12.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 11
Всего: 43



модифицировать томкат, чтобы он определял конец данных не на основании длины, указанной в хедере, а по другому признаку. или модифицируйте более простой сервер - такой например (там все в одном файле).

Это сообщение отредактировал(а) COVD - 10.12.2007, 18:49
PM MAIL   Вверх
ivg
Дата 10.12.2007, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 3
Всего: 81



Цитата(danilkus @  10.12.2007,  16:48 Найти цитируемый пост)
самописным генератором


Цитата(danilkus @  10.12.2007,  17:17 Найти цитируемый пост)
моего клиента 


А что бы клиента не поправить?

Цитата(COVD @  10.12.2007,  17:13 Найти цитируемый пост)
согласно протоколу http


 smile 
PM MAIL   Вверх
danilkus
Дата 10.12.2007, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.12.2007

Репутация: нет
Всего: нет



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

Добавлено через 3 минуты и 50 секунд
Цитата(ivg @  10.12.2007,  18:54 Найти цитируемый пост)
А что бы клиента не поправить?

Самописный клиент потому, что такой запрос никакой "правильный" клиент не выдаст. Мне нужно не привести запрос к правильному виду, а научиться обходиться с не правильными запросами. Такова уж задача.

Если интересно такой запрос выдает ИЕ7.0 при некоторых обстоятельствах  smile 


PM MAIL   Вверх
ivg
Дата 10.12.2007, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 3
Всего: 81



Цитата(danilkus @  10.12.2007,  18:54 Найти цитируемый пост)
Если интересно такой запрос выдает ИЕ7.0 при некоторых обстоятельствах

Ну вы уж поделитесь обстоятельствами, может в них собаку отрыть можно  smile
PM MAIL   Вверх
danilkus
Дата 10.12.2007, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.12.2007

Репутация: нет
Всего: нет



Цитата(ivg @  10.12.2007,  19:06 Найти цитируемый пост)
Ну вы уж поделитесь обстоятельствами, может в них собаку отрыть можно


Если бы я точно знал, конечно бы поделился. Проблема в том, что определенная (именно одна) версия ИЕ 7 посылает такой заголовок после непродолжительного простоя между запросами. Версию обновить возможности нет.
PM MAIL   Вверх
COVD
Дата 10.12.2007, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 11
Всего: 43



Цитата

простоя между запросами


у вас там наверное javascript периодически что-то посылает и посылает не правильно 

Это сообщение отредактировал(а) COVD - 10.12.2007, 19:20
PM MAIL   Вверх
danilkus
Дата 11.12.2007, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.12.2007

Репутация: нет
Всего: нет



Javascript конечно есть, но он работает не периодически, а по клику пользователя и ничего кроме form.submit не делает. Возможно виноват и JS вернее его интепретация этой версией ИЕ так как в ИЕ 6 и даже в других версиях ИЕ 7 такого не проявляется.
PM MAIL   Вверх
AlexeyVorotnikov
Дата 11.12.2007, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 1
Всего: 18



Скорее всего, без модификации исходного кода Tomcat'а, застваить его работать неправильно невозможно.


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0880 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.