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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> софт для мобилы, информация с сайта в приложении... 
:(
    Опции темы
casper200
Дата 20.11.2006, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



hi all

Мне нужно написать приложение, которое будет отражать текущую информацию с сайта.  smile 
Т.е. есть сайт отражающий состояние терминалов оплаты сотовой связи, там информация, на связи терминал или нет, работает ли принтер или кончилась бумага, работает валидатор или вышел из строя.
Подскажите плиз, советом или примером как это проще реализовать?
Использовал исходники с сайта sun.com для коннекта, (SecondExample.java) прекрасно работает и выдает содержимое страниц hello.txt  и Hello Name Но по https этот код работать не хочет... Он не хочет работать даже с адресом ya.ru выдает ошибку. 
Код

startApp threw an Exception
java.lang.IllegalArgumentException
java.lang.IllegalArgumentException
    at javax.microedition.lcdui.TextField.setChars(+105)
    at javax.microedition.lcdui.TextField.setString(+27)
    at javax.microedition.lcdui.TextField.<init>(+134)
    at javax.microedition.lcdui.TextBox.<init>(+74)
    at SecondExample.downloadPage(+140)
    at SecondExample.startApp(+8)
    at javax.microedition.midlet.MIDletProxy.startApp(+7)
    at com.sun.midp.midlet.Scheduler.schedule(+270)
    at com.sun.midp.main.Main.runLocalClass(+28)
    at com.sun.midp.main.Main.main(+116)
 Пожалуйста подскажите... Пните в нужном направлении..
PM MAIL   Вверх
Antropoid
Дата 20.11.2006, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



Ну если java.lang.IllegalArgumentException, да еще и 
at javax.microedition.lcdui.TextField.setChars(+105), то что-то ты в TextField не то пишешь...у тебя точно стоит в конструкторе TextField.ANY?

Цитата(casper200 @  20.11.2006,  20:50 Найти цитируемый пост)
Т.е. есть сайт отражающий состояние терминалов оплаты сотовой связи, там информация, на связи терминал или нет, работает ли принтер или кончилась бумага, работает валидатор или вышел из строя.
Подскажите плиз, советом или примером как это проще реализовать?


Можешь скачать исходный код html-страницы и распарсить нужным образом.




--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
casper200
Дата 21.11.2006, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



hi Antropoid

Я вижу ты понимаешь о чем идет речь... Это радует...
Цитата
Ну если java.lang.IllegalArgumentException, да еще и 
at javax.microedition.lcdui.TextField.setChars(+105), то что-то ты в TextField не то пишешь...у тебя точно стоит в конструкторе TextField.ANY?
 Честно говоря я использовал исходник с sum.com,  и не нашел в нем упоминание TextField.ANY.
привожу ниже код
Код
import java.io.*;
import javax.microedition.midlet.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;

/**
 * An example MIDlet to fetch a page using an HttpConnection.
 */
public class SecondExample extends MIDlet {

    private Display display;
/**Так работает*/
//    private String url = "http://www.javacourses.com/hello.txt";
/**А так уже не работает*/
    private String url = "http://www.ya.ru";

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

    /**
     * This will be invoked when we activate the MIDlet.
     */
    public void startApp() {
    // Use the specified URL is overriden in the descriptor
        try {
           downloadPage(url);
        } catch(IOException e) {
           // handle the exception
        }
    }

    private void downloadPage(String url) throws IOException {
    StringBuffer b = new StringBuffer();
        InputStream is = null;
    HttpConnection c = null;
    TextBox t = null;
    try {
        long len = 0 ;
        int ch = 0;

            c = (HttpConnection)Connector.open(url);
            is = c.openInputStream();

        len =c.getLength() ;
        if ( len != -1) {
        // Read exactly Content-Length bytes
        for (int i =0 ; i < len ; i++ )
            if ((ch = is.read()) != -1)
            b.append((char) ch);
        } else {
                // Read till the connection is closed.
        while ((ch = is.read()) != -1) {
                    len = is.available() ;
            b.append((char)ch);
        }
        }
            t = new TextBox("hello again....", b.toString(), 1024, 0);
        }  finally {
           is.close();
           c.close();
        }
    display.setCurrent(t);
    }
    /**
     * Pause, discontinue....
     */
    public void pauseApp() {
    }
    /**
     * Destroy must cleanup everything.
     */
    public void destroyApp(boolean unconditional) {
    }
}
Цитата
Можешь скачать исходный код html-страницы и распарсить нужным образом.
 Оч. интересное предложение... Можно по подробнее как это сделать? Может Вас не затруднит привести пример? Или хотя бы подскажите где об этом можно прочесть?
PM MAIL   Вверх
Antropoid
Дата 21.11.2006, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



Код

...
 }
           t = new TextBox("hello again....", b.toString(), 1024, 0);//<--------------!!!
 }  finally {
...

Просто запрашиваемая тобой html-страница больше чем 1024 символа. Сделай, например, так (в твоих обозначениях):
Код

t = new TextBox("hello again....", b.toString(), (int)len, 0);

Цитата(Antropoid @  20.11.2006,  23:04 Найти цитируемый пост)
Можешь скачать исходный код html-страницы и распарсить нужным образом.

Цитата(casper200 @  21.11.2006,  19:52 Найти цитируемый пост)
Оч. интересное предложение... Можно по подробнее как это сделать? Может Вас не затруднит привести пример? Или хотя бы подскажите где об этом можно прочесть?

Думаю этот вопрос отпадет сам собой, когда увидишь результат работы исправленного кода smile .


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
casper200
Дата 22.11.2006, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



good night Antropoid - you really cool
Ты мой ГЕРОЙ. Блин все вышло как ты и говорил. Действительно было ограничение. С твоей строчкой кода все нормализовалось. Огромное спа.
Научи меня, (ЕСЛИ ТЕБЯ СИЛЬНО НЕ ЗАТРУДНИТ) не выводить http код на экран, а найди в тегах нужную инфу, и вывести, либо только эти надписи, либо картинки вместо текста.
Например: 
Код
 <tr class="tr2" >
       <td width="7%" height="20">2006</td>
       <td width="10%"><acronym title="">Маг.<Минимаркет></acronym></td>
       <td width="25%">
<font color=red>Не на связи<br/>Последний сеанс 18.11.06 21:15</font>       </td>
 вывести просто Минимаркет - Не на связи или картинку.
PM MAIL   Вверх
casper200
Дата 22.11.2006, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть еще 1 ньюанс, по http он конектица к ya.ru без проблем и выдает код страницы, а вот по https запрашивается сертификат.... поэтому (IMHO) он не может дождаться согласия и отрубает соединение... Вообщем ошибка..
Код
startApp threw an Exception
java.lang.NullPointerException
java.lang.NullPointerException
    at SecondExample.downloadPage(+159)
    at SecondExample.startApp(+8)
    at javax.microedition.midlet.MIDletProxy.startApp(+7)
    at com.sun.midp.midlet.Scheduler.schedule(+270)
    at com.sun.midp.main.Main.runLocalClass(+28)
    at com.sun.midp.main.Main.main(+116)
 Может знаешь как побороть? Вот на всякий случай строка конекта
Код
в личке


Это сообщение отредактировал(а) casper200 - 22.11.2006, 21:04
PM MAIL   Вверх
Antropoid
Дата 22.11.2006, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



Цитата(casper200 @  22.11.2006,  19:50 Найти цитируемый пост)
 либо только эти надписи, либо картинки вместо текста.

какие еще картинки?

Цитата(casper200 @  22.11.2006,  19:50 Найти цитируемый пост)
найди в тегах нужную инфу

Код

    String s = 
    "<tr class=\"tr2\" >" + 
           "<td width=\"7%\" height=\"20\">2006</td>" + 
           "<td width=\"10%\"><acronym title=\"\">Маг.<Минимаркет></acronym></td>" +
           "<td width=\"25%\">" +
    "<font color=red>Не на связи<br/>Последний сеанс 18.11.06 21:15</font>       </td>";
        int i = s.indexOf("title");
        i = s.indexOf("<", i);
        int j = s.indexOf(">", i);
        String result = s.substring(i+1,j);
        
        System.out.println("Mag = " + s.substring(i+1,j));
        
        i = s.indexOf("font");
        i = s.indexOf(">", i);
        j = s.indexOf("<", i);
        System.out.println("Feature = " + s.substring(i+1,j));
        result += " - " + s.substring(i+1,j);
        
        System.out.println("Result: " + result);




--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Antropoid
Дата 23.11.2006, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



Цитата(casper200 @  22.11.2006,  20:23 Найти цитируемый пост)
Есть еще 1 ньюанс, по http он конектица к ya.ru без проблем и выдает код страницы, а вот по https запрашивается сертификат.... поэтому (IMHO) он не может дождаться согласия и отрубает соединение... Вообщем ошибка..

Исправь на
Код

} finally {
    if(is != null)
        is.close();
    if(c != null)
        c.close();
}

и измени 
Код

private void downloadPage(String url) throws IOException {

на
Код

private void downloadPage(String url) throws Exception {

а потом сделай так
Код

        try {
            downloadPage(url);
        } catch(IOException e) {
            // handle the exception
        } catch(Exception e) {
            System.out.println("Got exception here... " + e);
        }

увидишь ошибку...

Вобщем там с сертификатами проблема... я в этом не силен... вот те ссылка по теме http://developers.sun.com/techtopics/mobil...articles/https/
если будут вопросы, советую создать новый топик по проблеме с сертификатами, а то проблему с  "софт для мобилы, информация с сайта в приложении..." мы уже решили  smile .


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
casper200
Дата 23.11.2006, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



hi Antropoid
огромное спасибо БРАТАН 

PM MAIL   Вверх
casper200
Дата 8.12.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Antropoid БРАТАН выручай....
Работающий ранее код 
Код

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

/**
 * An example MIDlet to fetch a page using an HttpConnection.
 */
public class SecondExample extends MIDlet {

    private Display display;
/**Так работает*/
    private String url = "http://www.javacourses.com/hello.txt";
/**А так уже не работает*/
//    private String url = "http://www.ya.ru";
//    private String url = "https://www.javacourses.com";

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

    /**
     * This will be invoked when we activate the MIDlet.
     */
    public void startApp() {
    // Use the specified URL is overriden in the descriptor
        try {
           downloadPage(url);
        } catch(IOException e) {
           // handle the exception
        }
    }

    private void downloadPage(String url) throws IOException {
    StringBuffer b = new StringBuffer();
    InputStream is = null;
    HttpConnection c = null;
    TextBox t = null;
    try {
        long len = 0 ;
        int ch = 0;

            c = (HttpConnection)Connector.open(url);
            is = c.openInputStream();

        len =c.getLength() ;
        if ( len != -1) {
        // Read exactly Content-Length bytes
        for (int i =0 ; i < len ; i++ )
            if ((ch = is.read()) != -1)
            b.append((char) ch);
        } else {
                // Read till the connection is closed.
        while ((ch = is.read()) != -1) {
                    len = is.available() ;
            b.append((char)ch);
        }
        }
//            t = new TextBox("hello again....", b.toString(), 1024, 0);
            t = new TextBox("hello again....", b.toString(), (int)len, 0);
        }  finally {
           is.close();
           c.close();
        }
    display.setCurrent(t);
    }
    /**
     * Pause, discontinue....
     */
    public void pauseApp() {
    }
    /**
     * Destroy must cleanup everything.
     */
    public void destroyApp(boolean unconditional) {
    }
}
 Перестал выполнятся... Меня это убивает...
Код
Building "SecondExample"
Build complete
Running with storage root DefaultColorPhone
startApp threw an Exception
java.lang.NullPointerException
java.lang.NullPointerException
    at SecondExample.downloadPage(+159)
    at SecondExample.startApp(+8)
    at javax.microedition.midlet.MIDletProxy.startApp(+7)
    at com.sun.midp.midlet.Scheduler.schedule(+270)
    at com.sun.midp.main.Main.runLocalClass(+28)
    at com.sun.midp.main.Main.main(+116)
Execution completed.
 Как Вы управляетесь с этой хренью? Я себя еще не разу не чувствовал таким ТУПЫМ....  smile 
PM MAIL   Вверх
Antropoid
Дата 9.12.2006, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



ты просто попутал исходники  smile 
Смотри выше - мы это уже обсуждали
http://forum.vingrad.ru/index.php?showtopi...st&p=933847


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
javastic
Дата 11.12.2006, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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




M
javastic
casper200, или ниже! Сходные по соджержанию темы отображены в конце страницы.



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

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

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


 




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


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

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