| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java ME (J2ME) > Ошибка 411 (PHP+J2ME+POST) |
| Автор: Anton Vatchenko 1.7.2006, 12:25 |
| Недавно решил один свой проект перенести из GET в POST. Долго отлаживал все на компьютере (стоит Апач+ПХП и Виндовс ХР), заработало. Выложил на бесплатный хостинг jino-net.ru - при каждом обращении стало слетать с ошибкой 411. Вычитал, что это сервер хочет увидеть длину запроса, но я же ее передаю! Кусок кода на J2ME: c = (HttpConnection)Connector.open(url); c.setRequestMethod(HttpConnection.POST); int len=data.length; c.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); c.setRequestProperty("Content-Length", ""+len); os = c.openOutputStream(); os.write(data); os.flush(); int rc = c.getResponseCode();//Вот здесь 411 PHP-код не привожу, так как до него дело не доходит. Помогите исправить. |
| Автор: nagliyvred 17.7.2006, 09:37 |
| Посмотрите логи сервера - какой запрос приходит - есть ли там Content-Length ? Как вариант, попробуйте обойтись без os.flush(). |
| Автор: Dancer 17.7.2006, 11:07 |
| http://forum.vingrad.ru/index.php?showtopic=104207 |
| Автор: AndriyTyurnikov 12.8.2006, 21:06 |
| Как вариант причины бага - использование WAP-GPRS вместо INTERNET-GPRS, но это врядли. Посему есть только 2 идеи 1) какое значение URL 2) проверь, всe ли в порядке с data и nagliyvred говорит дело - попробуй без flush(); |
| Автор: Lamer_Phn 19.8.2007, 20:45 | ||
| Была такая же ситуация с отправкой изображения на сервер через HTTP POST. ПРишлось вместо HTTPConnection использовать SocketConnection. Заработало, но только на эмуляторе, так как Siemens CX65 мой не разрешал использовать 80 порт для Socketов, а для других портов работало нормально. Привожу пример тела сообщения:
причем длину сообщения подбирал: Integer.toString(tsnap.length+100). Странно, но без 100 обрабатывающий скрипт запускался, а вот данные не приходили |
| Автор: roman_savelev 20.6.2009, 05:15 |
| Дело в том, что в J2ME реализация HTTP протокола такова, что размер буфера отправки данных ограничен 2 kb (в новых моделях это ограничение убрали). В случае если мидлет пытается послать более 2 kb, то HttpConnection автоматически переключается в режим отправки порциями (Transfer-Encoding: chunked) и если сервер умеет такое принимать то всё нормально передастся, иначе обычно ругается на что-то типа отсутствует поле Content Length или ещё что-нибудь. Кстати к примеру ngnix не умеет принимать порциями. Apache умеет, но на некоторых хостингах в кофигурации это отключено. В общем проблема на стороне сервере. |