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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка 411 (PHP+J2ME+POST), Работает везде, кроме jino-net.ru 
:(
    Опции темы
Anton Vatchenko
Дата 1.7.2006, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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-код не привожу, так как до него дело не доходит. Помогите исправить. 


--------------------
user posted image
PM MAIL   Вверх
nagliyvred
Дата 17.7.2006, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Посмотрите логи сервера - какой запрос приходит - есть ли там Content-Length ? Как вариант, попробуйте обойтись без os.flush(). 
PM   Вверх
Dancer
Дата 17.7.2006, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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





--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
AndriyTyurnikov
Дата 12.8.2006, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как вариант причины бага - использование WAP-GPRS вместо INTERNET-GPRS, но это врядли.
Посему есть только 2 идеи
1) какое значение URL
2) проверь, всe ли в порядке с data


и nagliyvred говорит дело - попробуй без flush();

Это сообщение отредактировал(а) AndriyTyurnikov - 12.8.2006, 21:18
PM MAIL   Вверх
Lamer_Phn
Дата 19.8.2007, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Была такая же ситуация с отправкой изображения на сервер через HTTP POST. ПРишлось вместо HTTPConnection использовать SocketConnection. Заработало, но только на эмуляторе, так как Siemens CX65 мой не разрешал использовать 80 порт для Socketов, а для других портов работало нормально.
Привожу пример тела сообщения:
Код

try {
            sc = (SocketConnection)Connector.open("socket://localhost:80");

            String rn = "\r\n";
            String host = "localhost";
            String http = "http://localhost/";
            String jpgString = new String(tsnap);

            try{
            is = sc.openInputStream();
            os = sc.openOutputStream();
            String message = "POST /myup.php? HTTP/1.1"+rn+"Accept: */*"+rn+"Accept-Language: ru"+rn+"Content-Type: multipart/form-data; boundary=---------------------------7d73991305de"+rn+"Accept-Encoding: gzip, deflate"+rn+"User-Agent: Superproga"+rn+"Host: "+host+rn+"Content-Length: "+Integer.toString(tsnap.length+100)+rn+"Connection: Keep-Alive"+rn+"Cache-Control: no-cache"+rn+rn+"-----------------------------7d73991305de"+rn+"Content-Disposition: form-data; name=\"myfile\"; filename=\"c:setup.log\""+rn+"Content-Type: application/octet-stream"+rn+rn+jpgString+rn+rn+"-----------------------------7d73991305de--"+rn;
            byte[] data = message.getBytes();
             

             // Старт потока передачи сообщения
            os.write(data);
   
            } finally {
            sc.close();
            os.close();
            }               

            } catch(IOException ioe) {
            ioe.printStackTrace();
            }



причем длину сообщения подбирал: Integer.toString(tsnap.length+100). Странно, но без 100 обрабатывающий скрипт запускался, а вот данные не приходили
PM MAIL   Вверх
roman_savelev
Дата 20.6.2009, 05:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Дело в том, что в J2ME реализация HTTP протокола такова, что размер буфера отправки данных ограничен 2 kb (в новых моделях это ограничение убрали). В случае если мидлет пытается послать более 2 kb, то HttpConnection автоматически переключается в режим отправки порциями (Transfer-Encoding: chunked) и если сервер умеет такое принимать то всё нормально передастся, иначе обычно ругается на что-то типа отсутствует поле Content Length или ещё что-нибудь. Кстати к примеру ngnix не умеет принимать порциями. Apache умеет, но на некоторых хостингах в кофигурации это отключено. В общем проблема на стороне сервере. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




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


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

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