Приложение j2me не работает на мобильном телефоне

Я разработал одно простое приложение на J2ME. Приложение просто делает HttpConnection и делает только запрос. Вот код для этого:

 public void run() {
    System.out.println("Inside saveData");
    HttpConnection hc = null;
    OutputStream dout = null;
   try {
        System.out.println("custName = " + custName);
        System.out.println("prodName = " + prodName);
        System.out.println("qty = " + qty);

        hc = (HttpConnection) Connector.open("http://www.sufalamtech.com/demo/mobile/test.php?custName=" + custName + "&prodName=" + prodName + "&qty=" + qty);
        //hc = (HttpConnection) Connector.open("http://www.sufalamtech.com/demo/mobile/test.php?custName=Custtt51&prodName=Proddd52&qty=53");
        //hc = (HttpConnection) Connector.open("http://www.sufalamtech.com/demo/mobile/test.php?custName="+custName+"&prodName="+prodName+"&qty="+qty);

        hc.setRequestProperty("User-Agent", "Profile/MIDP-2.1 Configuration/CLDC-1.1");
        hc.setRequestMethod(HttpConnection.GET);
        dout = hc.openOutputStream();

    } catch (Exception e) {
        System.out.println("Error... = " + e);
    } finally {
        try {
            if (dout != null) {
                dout.close();
            }

            if (hc != null) {
                hc.close();
            }
        } catch (Exception e2) {
            e2.printStackTrace();
        }
    }

Это отлично работает на ПК (симуляторе). Но когда я развертываю файл .jar на своем Nokia 5310, он ничего не возвращает из HttpConnection.

На самом деле я не хочу получать данные с URL. Я просто хочу отправить запрос на свой URL. Иначе будет выполняться только по этому URL ... Мое приложение отлично работает в Nokia 3110 Classic. Но на Nokia 5310 он не работает. Есть ли у вас предложения?


person Community    schedule 25.08.2009    source источник


Ответы (3)


Проблема в том, что в некоторых реализациях ваше приложение может даже не отправлять запрос, пока вы не вызовете метод connection.getResponseCode (). Попробуйте вызвать метод getResponseCode () перед открытием InputStream или OutputStream

person Community    schedule 25.08.2009
comment
Привет Рам. Я пробовал вызвать функцию getResponseCode (). Но все же моя проблема в том, что я не могу добиться должного исполнения в Nokia 5310. Но я получаю идеальный результат в Nokia 3110 Classic. Пожалуйста, предложите любое решение, если у вас есть ... Спасибо .. - person Nirmal; 26.08.2009
comment
# 1 Также не пытайтесь переопределить заголовок User-Agent. Поскольку известно, что некоторые устройства генерируют исключения при установке заголовка User-Agent. Попробуйте прокомментировать эту строку. # 2 Когда вы делаете запрос GET, вы обычно открываете InputStream, а не OutputStream - person Prabhu R; 26.08.2009
comment
Привет, Рам, спасибо за ответ .. Я внес оба изменения, но все еще не получаю должного результата .. Я не знаю, что делать ... есть ли способ отлаживать приложение прямо на мобильном телефоне? - person Nirmal; 26.08.2009
comment
Возможно, вы можете показать предупреждение, если вы поймаете исключение или в блоке finally. Обозначьте сообщения соответствующим образом, чтобы знать, где возникает ошибка при появлении предупреждения. Не могли бы вы также объяснить, что вы ожидаете от сервера и какой тарифный план вы используете в своем мобильном телефоне. Вы используете wap-соединение или gprs-соединение для перехода по этому URL-адресу? - person Prabhu R; 26.08.2009
comment
Я просто хочу отправить 3 параметра в виде URLString от пользователя, то есть название продукта, имя клиента и количество. Остальную работу выполнит мой файл test.php. Я использую gprs-соединение для перехода по URL-адресу. - person Nirmal; 26.08.2009
comment
Какой код ответа вы получаете, и можете ли вы обнюхать сетевые пакеты на стороне сервера, чтобы узнать, действительно ли запрос достигает сервера или нет - person Prabhu R; 27.08.2009

Вам нужно использовать входной поток соединения, а не выходной поток. Что-то вроде этого (непроверено).

    if (hc.getResponseCode() == HttpConnection.HTTP_OK) {
        int length = (int)hc.getLength();
        InputStream is = hc.openInputStream();
        content = new byte[length];
        int read = 0;
        while (read < length) {
            int r = is.read(content, read, length - read);
            if (r < 0) {
                break;
            }
            read += r;
        }
        is.close();
    }
    hc.close(); 
person Zed    schedule 25.08.2009
comment
На самом деле я не хочу получать данные с URL. Я просто хочу отправить запрос на свой URL. Остальное будет выполняться только по этому URL ... Мое приложение отлично работает в Nokia 3110 Classic. Но не работает на Nokia 5310. Есть ли у вас какие-нибудь предложения, пожалуйста? - person Nirmal; 25.08.2009
comment
Вы уверены, что проблема не только в разрешении? Запуск подключения для передачи данных часто ограничен. Мой телефон спрашивает меня каждый раз, когда я подключаюсь. - person wvdschel; 25.08.2009
comment
Да, это не вопрос разрешения. На самом деле приложение работает на Nokia 3110 отлично .. Значит, это должна быть какая-то другая проблема .. Пожалуйста, предложите любые решения, если у вас есть .. - person Nirmal; 26.08.2009

У меня такая же проблема с Nokia E Series (E51), код отлично работает в Sun Simulator, однако попробуйте установить точку доступа по умолчанию для вашего приложения / MIDlets в диспетчере приложений, это может решить вашу проблему. Зайдите в Установки -> Приложение. Диспетчер -> Откройте имя приложения, измените настройку сайта -> Выберите точку доступа для своего приложения.

person Community    schedule 04.08.2010