![]() |
Модераторы: javastic, AntonSaburov |
![]() ![]() ![]() |
|
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Недавно решил один свой проект перенести из 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 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 2.10.2005 Репутация: 3 Всего: 3 |
Посмотрите логи сервера - какой запрос приходит - есть ли там Content-Length ? Как вариант, попробуйте обойтись без os.flush().
|
|||
|
||||
Dancer |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
-------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! ![]() |
|||
|
||||
AndriyTyurnikov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 30.6.2006 Репутация: 1 Всего: 1 |
Как вариант причины бага - использование WAP-GPRS вместо INTERNET-GPRS, но это врядли.
Посему есть только 2 идеи 1) какое значение URL 2) проверь, всe ли в порядке с data и nagliyvred говорит дело - попробуй без flush(); Это сообщение отредактировал(а) AndriyTyurnikov - 12.8.2006, 21:18 |
|||
|
||||
Lamer_Phn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 19.8.2007 Репутация: нет Всего: нет |
Была такая же ситуация с отправкой изображения на сервер через HTTP POST. ПРишлось вместо HTTPConnection использовать SocketConnection. Заработало, но только на эмуляторе, так как Siemens CX65 мой не разрешал использовать 80 порт для Socketов, а для других портов работало нормально.
Привожу пример тела сообщения:
причем длину сообщения подбирал: Integer.toString(tsnap.length+100). Странно, но без 100 обрабатывающий скрипт запускался, а вот данные не приходили |
|||
|
||||
roman_savelev |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 26.8.2007 Репутация: нет Всего: нет |
Дело в том, что в J2ME реализация HTTP протокола такова, что размер буфера отправки данных ограничен 2 kb (в новых моделях это ограничение убрали). В случае если мидлет пытается послать более 2 kb, то HttpConnection автоматически переключается в режим отправки порциями (Transfer-Encoding: chunked) и если сервер умеет такое принимать то всё нормально передастся, иначе обычно ругается на что-то типа отсутствует поле Content Length или ещё что-нибудь. Кстати к примеру ngnix не умеет принимать порциями. Apache умеет, но на некоторых хостингах в кофигурации это отключено. В общем проблема на стороне сервере.
|
|||
|
||||
![]() ![]() ![]() |
FAQ раздела лежит здесь! |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |