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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> J2ME Messenger - действительно проблема! Как осуществить передачу и запросы? 
:(
    Опции темы
CubeCode
  Дата 18.9.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет всем!

Ту недавно я задумался о том, как написать Messegger на j2me. Точнее, не messenger, а хотя бы чат.

Проблема, с первого взгляда, несложная - просто каждый раз создаём StreamConnection или HttpConnection с GET запросом, читаем выходные данные и закрываем соединение. Остаётся проблема лишь в том, что телефон постоянно запрашивает разрешение на подключение. Как от этого избавиться?

 smile 
PM MAIL   Вверх
W0LF
Дата 18.9.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

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



Ищи на форуме. Здесь где-то было про подписанные мидлеты.


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
redrick
Дата 19.9.2006, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



CubeCode
W0LF, канечно правильно написал, но вообще поведение зависит от девайса, многие спрашивают только один раз(и ты отвечаешь типа Yes to all)


--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
javastic
Дата 19.9.2006, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

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



Да, это зависит от телефона. Например в СониЭриках можно установить на приложение доступ: Запретить, Спрашивать Всегда или Спросить один раз. Подписанный мидлет не спрашивает, т.к. сертификат выдается доверительному приложению или игре. Сам сертификат стоит от $400.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
CubeCode
Дата 19.9.2006, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(javastic @ 19.9.2006,  08:57)
Да, это зависит от телефона. Например в СониЭриках можно установить на приложение доступ: Запретить, Спрашивать Всегда или Спросить один раз. Подписанный мидлет не спрашивает, т.к. сертификат выдается доверительному приложению или игре. Сам сертификат стоит от $400.

Ну, это я понимаю. Но тут мне кто-то говорил на днях про Live Connection. Т. е. телефон, не разрывая HttpConnection, получает данные с web-страницы, каждый раз её обновляя, и посылая различные POST запросы через DataOutputStream. Вот какименно это реализовать - вот это непонятно.
PM MAIL   Вверх
W0LF
Дата 19.9.2006, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

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



Иногда, может через одно http соединение пройти несколько пакетов. Но обычно оно разрывается и каждый раз создается новое. А в чем собственно проблема тогда? ну и пусть себе создается новое.


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
CubeCode
Дата 19.9.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот, взгляните на код. Вроде всё правильно, но не работает - страница должна обновляться по таймеру, каждый раз посылая запрос
с параметром request_string, равным случайному числу.

Код

import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.media.*;
import java.util.*;


public class FirstExample extends MIDlet {

    private Display display;
    private _TimerTask task = null;
    private Timer timer = null;
    private HttpConnection httpc= null;
    private Random rnd = new Random();

    public FirstExample() {
       display = Display.getDisplay(this);
    }

    public void startApp() 
    {
        try
        {
            httpc = (HttpConnection)Connector.open("http://192.168.0.17/serg/test.php",Connector.READ_WRITE);
            httpc.setRequestMethod(HttpConnection.POST);
            httpc.setRequestProperty("user-agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0");
            httpc.setRequestProperty("content-type", "application/x-www-form-urlencoded");            
            httpc.setRequestProperty("Cache-Control", "no-cache, must-revalidate");            
        }
        catch (IOException eoi){}
        task = new _TimerTask();
        timer = new Timer();
        timer.scheduleAtFixedRate(task,0,1000);
    }

    public void pauseApp() {
    
    }

    
    
    public void destroyApp(boolean unconditional) 
    {
        
    }
   

    
    void testConnection()
    {
        //HttpConnection connection = null;
        DataInputStream is = null;
        DataOutputStream dos = null;
        StringBuffer buffer = new StringBuffer();
        String request;
        int ch;
        TextBox box;

        try
        {
            //connection = (HttpConnection)Connector.open("http://192.168.0.17/serg/test.php");
            //is = connection.openInputStream();
            
            
            request = "request_str="+Integer.toString(rnd.nextInt());
            
            dos = httpc.openDataOutputStream();
            dos.write(request.getBytes());
            dos.flush();
            
            is = new DataInputStream(httpc.openDataInputStream()); 

            while ((ch = is.read()) != -1) buffer.append((char)ch);
            
            box = new TextBox("test",buffer.toString(),1024,0);
            display.setCurrent(box);
        }
        catch(IOException ioe) {}
        finally 
        {
            try
            {
            if (is!=null) {is.close();}
            if (dos!=null) {dos.close();}
            }
            catch(IOException ioe){};
        }

    }
    
    class _TimerTask extends TimerTask
    {
        public void run()
        {
            testConnection();
            
        }
    }

}


Ниже - код запрашиваемой страницы:

Код

<?
    $request_str = $_POST['request_str'];
    echo "Received value:".$request_str;
?>


В чем проблема???  smile 

PM MAIL   Вверх
W0LF
Дата 19.9.2006, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

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



Я совсем не силен в php...
Попробуй убрать из 
Код

httpc = (HttpConnection)Connector.open("http://192.168.0.17/serg/test.php",Connector.READ_WRITE);

Код

Connector.READ_WRITE

Хотя вряд ли поможет
Так же попробуй добавить длину отправляемого пакета - 
Код

httpc.setRequestProperty("content-length", String.valueOf(request.length));

Но и это не факт

Добавлено @ 17:38 
А страница щас работает? в смысле дай мне линку, по которой я смогу к ней обратится..
И еще в catch поставь printStackTrace(), чтоб хотя бы увидеть че-то

Это сообщение отредактировал(а) W0LF - 19.9.2006, 18:01


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
W0LF
Дата 19.9.2006, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

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



Цитата

ошибки во время отладки НУЖНО ВЫВОДИТЬ ВСЕГДА, а не оставлять кэтч пустым!!!!
Проверь свои настроки сетевые (файрвол, сервак, и всё такое)
плюс посмотри, что выводиться во время создания коннекшена

Цитировался Dancer
Думаю, он не обидится ;) 

Это сообщение отредактировал(а) W0LF - 19.9.2006, 18:31


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
javastic
Дата 20.9.2006, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

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



CubeCode, а хоть один раз отрабатывает?

p.s. убери flush, на многих серваках он ничего не возвращает, а просто запрос висит.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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