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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с SocketConnection как Cнизкоуровневым HTTP, проблема при создании POST запроса  
V
    Опции темы
Выхухоль
Дата 12.12.2008, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вообщем-то проблемка не очень ординарная
Опишу в двух словах....=)
значит мой мидлет работает через инет ...с веб сервисом xmlrpc
вооот..
на простом интерфейсе HttpConnection у мну все летает, но тут встала резкая задача сделать тоже самое токо на SocketConnection и здеся возникла проблема ...в основном связанная с моим не знанием (всмысле не как у его создателя) протокола HTTP 
я пытаюсь делать это
Код

String len =String.valueOf(messageLength);
            SocketConnection hc = (SocketConnection) Connector.open("socket://89.236.233.122:80", Connector.READ_WRITE, true);
           dout = new DataOutputStream(hc.openOutputStream());
           din = new DataInputStream(hc.openInputStream());
           // String n = new String("OPTIONS / HTTP/1/1".getBytes(),"UTF-8");

           bos = new ByteArrayOutputStream();
           bos.write("\tPOST / HTTP/1.1\n".getBytes(), 0, "\tPOST / HTTP/1.1\n".getBytes().length);
           bos.write("\tUser-Agent:MobileAgent\n".getBytes(), 0, "\tUser-Agent:MobileAgent\n".getBytes().length);
           bos.write("\tContent-Type:text/xml\n".getBytes(), 0, "\tContent-Type:text/xml\n".getBytes().length);
           bos.write(("\tContent-Length:"+len+"\n\n\t").getBytes(), 0, ("\tContent-Length:"+len+"\n\n\t").getBytes().length);         
           bos.write(request, 0, request.length);           
           dout.write(bos.toByteArray());          
           dout.flush();
           dout.close(); 
           byte[] bs = new byte[900];
           
           din.readFully(bs);
           bos = new ByteArrayOutputStream();
           bos.write(bs);        
           
         String s =   bos.toString();
           //in  = din.
          
           //byte[] b = n.getBytes();
           bos = new ByteArrayOutputStream();
          // bos.write(b);
           bos.write(request);
           //out.write(b);
           String f = bos.toString();

в переменной s у мну выходит html страничка с кодом ошибки 400 bad request что значит что запрос мой годится токо для меня и больше ни для кого..
в нете не могу нарыть инфу...видел что тама есть какието заголовки есть заголовки протокола как я понял и заголовки тела запроса...въехать не могу...сделать нуна быстро а время кончается..
помогите разобраться ребят ..если кто сталкивался с такими вещами..
PM MAIL ICQ   Вверх
eugine_s
Дата 12.12.2008, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот тут глянь, может поможет:
http://forum.vingrad.ru/forum/topic-102457.html
PM MAIL   Вверх
Shushpanchik
Дата 12.12.2008, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 17.7.2007
Где: Россия, г. Пенза

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



Заголовки у тебя какие-то непонятные...
Код

bos.write("\tPOST / HTTP/1.1\n".getBytes(), 0, "\tPOST / HTTP/1.1\n".getBytes().length);
bos.write("\tUser-Agent:MobileAgent\n".getBytes(), 0, "\tUser-Agent:MobileAgent\n".getBytes().length);
bos.write("\tContent-Type:text/xml\n".getBytes(), 0, "\tContent-Type:text/xml\n".getBytes().length);
bos.write(("\tContent-Length:"+len+"\n\n\t").getBytes(), 0, ("\tContent-Length:"+len+"\n\n\t").getBytes().length);

Каждая строка должна должна выглядеть примерно так "Content-Length: 1024\r\n", в конце запроса пустая строка должна быть, т.е. "Content-Length: 1024\r\n\r\n". И между "Content-Length:" и "1024" обязательно должен быть пробел или табуляция.
Вообще, в переводе на нормальный язык твой запрос должен выглядеть так:
Код

String request = "POST / HTTP/1.1\r\nUser-Agent: Mobile-Agent\r\nContent-Type: text/xml\r\nContent-Length: " + Len + "\r\n\r\n";
bos.write(request.getBytes);


RTFM: HTTP 1.1 - Русский перевод
PM MAIL WWW ICQ   Вверх
Выхухоль
Дата 12.12.2008, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Shushpanchik, спасибо очень помог.!!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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