У меня есть набор веб-служб SOAP, размещенных на IIS7 (MSSOAP 3.0), которые используются веб-приложением .Net, а также приложением J2ME (в настоящее время запущенным через эмулятор). Веб-приложение может успешно вызывать все определенные методы. Приложение J2ME успешно вызывает все методы, кроме тех, которые POST-данные больше 2K. Неудачные методы возвращают следующую ошибку:
The size of the request exceeds the limit allowed by the server
Объем данных, передаваемых по этому вызову, невелик. Это меньше, чем отправлено веб-приложением, и также значительно ниже предела, определенного в настройках реестра (в настоящее время 102400):
HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / MSSOAP / 30 / SOAPISAP / MaxPostSize
Кто-нибудь имеет представление, почему приложение J2ME не будет работать с этой ошибкой.
UPDATE
При отправке данных из приложения J2ME класс соединения Http вставляет «Transfer-Encoding: chunked» в заголовок запроса, когда размер сообщения превышает ~ 2K. Это заменит любую «Content-Length», которая также может быть добавлена в заголовок. Класс HttpConnection не позволяет переопределять это поведение.
Если я имитирую вызов метода, используя telnet с теми же данными из приложения J2ME, то вызов проходит успешно.
После анализа пакетов, отправленных из приложения J2ME, и моделирования telnet я заметил, что подход telnet не включает заголовок чанкинга. Пакеты из приложения J2ME были неполными. Только заголовки и последний пакет были отправлены, возможно, из-за того, как IIS обрабатывает запрос. В IIS7 включена блокировка.
Я нашел похожие сообщения об этой проблеме еще где-то в Интернете, но решения не найдено. Следующая ссылка описывает проблему, похожую на мою.
Тема: j2me http post проблема в IIS 6.0