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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> соединение по https 
:(
    Опции темы
casper200
Дата 4.12.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



hi all

помогите пожалуйста разобраться.... Вот код 
Код
import java.io.*;
import javax.microedition.midlet.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;

//public class HelloNet extends MIDlet {
public class HelloNet extends MIDlet implements 
  CommandListener {

    // User interface command to exit the current 
    // application.
    private Command exitCommand  = new Command("Exit", 
      Command.EXIT, 2);
    // User interface command to issue an HTTP GET 
    // request.
    private Command getCommand = new Command("Get", 
      Command.SCREEN, 1);

    /// The current display object.
    private Display display;
    // The url to GET from the 'net.
    private String url;

    /**
     * Initialize the MIDlet with a handle to the 
     * current display.
     */
    public HelloNet() {
//        url = "https://127.0.0.1/hello.txt";
          url = "https://www.javacourses.com";
    display = Display.getDisplay(this);
    }

    /**
     * This lifecycle method should return immediately 
     * to keep the dispatcher
     * from hanging.
     */
    public void startApp() {
    showPrompt();
    }

    /**
     * Display the main screen.
     */
    void showPrompt() {
        String s = "Press Get to fetch " + url;
        TextBox t = new TextBox("Http Result", s, 
          s.length(), 0);
        t.addCommand(exitCommand);
        t.addCommand(getCommand);
        t.setCommandListener(this);
    display.setCurrent(t);
    }

    /**
     * Read the content of the page.
     */
    private void readContents(String request) {
    StringBuffer b = new StringBuffer();
    HttpConnection c = null;
        InputStream is = null;
    TextBox t = null;
    try {
        int len = 0;
        int ch = 0;
            c = (HttpConnection)Connector.open(url);
            c.setRequestMethod(HttpConnection.GET);
        is = c.openInputStream();

            // length of content to be read.
            len = (int) 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 {
           if (is!=null)
               is.close();
           if (c!=null)
               c.close();
        }

    display.setCurrent(t);
    }


    /**
     * Pause, discontinue....
     */
    public void pauseApp() {
    }

    /**
     * Destroy must cleanup everything.
     */
    public void destroyApp(boolean unconditional) {
    }

}


не проходит компиляция... Вылетает ошибка не могу победить 
Код
Building "HelloNet"
C:\WTK21\apps\HelloNet\src\HelloNet\HelloNet.java:7: HelloNet should be declared abstract; it does not define commandAction(javax.microedition.lcdui.Command,javax.microedition.lcdui.Displayable) in HelloNet
public class HelloNet extends MIDlet implements 
       ^
1 error
com.sun.kvem.ktools.ExecutionException
Build failed

PM MAIL   Вверх
Dancer
Дата 4.12.2006, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Дык нормальным английским языком написано, что нужно либо класс абстрактным делать либо метод имплементить в своём классе. Этот метод public void commandAction(Command c, Display d){}


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


Новичок



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

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



hi Dancer

Спасибо танцор.
Не совсем понял что делать с 
Код
public void commandAction(Command c, Display d){}

но попробую тупо добавить в код.
Еще раз спасибо.
PM MAIL   Вверх
Dancer
Дата 5.12.2006, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(casper200 @  5.12.2006,  09:47 Найти цитируемый пост)
Не совсем понял что делать с 
Код
public void commandAction(Command c, Display d){}

Ну, если это не понятно - тогда нужно к первоисточниками (книжки по Java, плюс готовые примеры из WTK посмотреть. По возможности какую нибудь книжку для начинающих по J2ME)
Твой код имплементирует класс CommandListener то есть, ты в своём классе можешь сделать метод, который будет обрабытывать события от нажатия на софткеи телефона. Причём ты самостоятельно вводишь эти кнопки (exitCommand   и getCommand). Ты кнопки то ввёл, а для того чтобы обработать что на них кто-то нажал в какой-то момент времени, ты и имплементишь CommandListener, и после этого, настраиваешь, что обработкой на нажатия софткеев будет заниматься твой класс t.setCommandListener(this);, то есть, когда произойдёт нажатие на софткея при выведнном тобой TextBox, то будет вызываться специальный метод (commandAction(Command c, Display d)) для класса CommandListener, но CommandListener это интерфейс в котором есть определённые методы, то есть их имена даны и набор параметров передаваемых этим методам, а так же тип который возвращается данными методами, то есть методы эти пользователь обязан (ОБЯЗАН!!) самостоятельно написать (поведение и логику работы, и т.д.), ну или хотябы заглушки, ну или делать класс абстрактным, чтобы другой класс который будет от нашего астрактного класса наследоваться сам уже включал в себя имплементацию методов интерфейса. И так как твой класс имплементит метод commandAction из интерфейса CommandListener,  ты можешь проверить, что за командная кнопка нажата и на каком экранчике это произошло, и уже в зависимости от этого делать те или иные действия (то есть, добавить некий интерактив при работе с пользователем)

Ниже твой код, но с добавленным методом.

Код

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

//public class HelloNet extends MIDlet {
public class HelloNet extends MIDlet implements 
  CommandListener {

    // User interface command to exit the current 
    // application.
    private Command exitCommand  = new Command("Exit", 
      Command.EXIT, 2);
    // User interface command to issue an HTTP GET 
    // request.
    private Command getCommand = new Command("Get", 
      Command.SCREEN, 1);

    /// The current display object.
    private Display display;
    // The url to GET from the 'net.
    private String url;

    /**
     * Initialize the MIDlet with a handle to the 
     * current display.
     */
    public HelloNet() {
//        url = "https://127.0.0.1/hello.txt";
          url = "https://www.javacourses.com";
    display = Display.getDisplay(this);
    }

    /**
     * This lifecycle method should return immediately 
     * to keep the dispatcher
     * from hanging.
     */
    public void startApp() {
    showPrompt();
    }

    /**
     * Display the main screen.
     */
    void showPrompt() {
        String s = "Press Get to fetch " + url;
        TextBox t = new TextBox("Http Result", s, 
          s.length(), 0);
        t.addCommand(exitCommand);
        t.addCommand(getCommand);
        t.setCommandListener(this);
    display.setCurrent(t);
    }

    /**
     * Read the content of the page.
     */
    private void readContents(String request) {
    StringBuffer b = new StringBuffer();
    HttpConnection c = null;
        InputStream is = null;
    TextBox t = null;
    try {
        int len = 0;
        int ch = 0;
            c = (HttpConnection)Connector.open(url);
            c.setRequestMethod(HttpConnection.GET);
        is = c.openInputStream();

            // length of content to be read.
            len = (int) 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 {
           if (is!=null)
               is.close();
           if (c!=null)
               c.close();
        }

    display.setCurrent(t);
    }

    public void commandAction(Command c, Display d){
        if (c==exitCommand) {
            destroyApp(true);
        }
    }

    /**
     * Pause, discontinue....
     */
    public void pauseApp() {
    }

    /**
     * Destroy must cleanup everything.
     */
    public void destroyApp(boolean unconditional) {
         notifyDestroyed();
    }

}




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


Новичок



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

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



Добрый вечер Танцор

Спасибо огромное... Весьма позновательно, теперь начинаю понимать основы. НО даже с данным методом (обработки нажатия софткеев) код не компилится...
У меня такая ошибка...
Код
Project settings saved
Building "HelloNet"
C:\WTK21\apps\HelloNet\src\HelloNet\HelloNet.java:7: HelloNet should be declared abstract; it does not define commandAction(javax.microedition.lcdui.Command,javax.microedition.lcdui.Displayable) in HelloNet
public class HelloNet extends MIDlet implements 
       ^
1 error
com.sun.kvem.ktools.ExecutionException
Build failed
 Я в ШОКЕ!!!. Чего еще не хватает? smile 
PM MAIL   Вверх
W0LF
Дата 5.12.2006, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


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

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



Ну... ошибся немного Dancer....
Ты ж зри в строчку 
Цитата

C:\WTK21\apps\HelloNet\src\HelloNet\HelloNet.java:7: HelloNet should be declared abstract; it does not define commandAction(javax.microedition.lcdui.Command,javax.microedition.lcdui.Displayable) in HelloNet

и посмотри в эту - 
Код

public void commandAction(Command c, Display d){

различие ведь есть...
public void commandAction(Command c, Displayable d){


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


Опытный
**


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

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



Цитата(casper200 @  5.12.2006,  22:03 Найти цитируемый пост)
Чего еще не хватает? 

замени
Код

public void commandAction(Command c, Display d){
...

Код

на
public void commandAction(Command c, Displayable d){
...

и еще, вообще-то, нужно делать, например, так:
Код

private void readContents(String request) throws IOException {


ой! WOLF опередил  smile 

Это сообщение отредактировал(а) Antropoid - 5.12.2006, 22:56


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


Шустрый
*


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

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



при чем тут https? smile 
PM MAIL WWW   Вверх
Dancer
Дата 6.12.2006, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



да точно public void commandAction(Command c, Displayable d){}

Сорри, лоханулся Я! (писал прям здесь, так сказать от руки. Нет бы передовой технологией Copy-Paste воспользоваться.)

А https тут при том, что судя по коду, человек что-то хочет по этому протоколу попередавать, но не зная откуда проблема вылазиет, решил тему именн так и обозвать. (хотя..... с https у него после того как сможет скомпилить свою прогу, вопросы точно возникнут smile ). Можно сказать - название темы, для будующих вопросов smile


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


Новичок



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

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



hi all 
Ребята спасибо за отзывы... Не понимаю как Вы пишите на этой хрени...
Заменил в соответствии с Вашими советами и разъеснениями строку. И вылезла еще куча ошибок. Просто руки опускаются. Пойду пучить шары (глаза в смысле), анализировать код.

P.S. М.б. кто то писал приложения, которые бы коннектились по https к сайту? Помогите плиз.
1. Есть ли особенность соединения при использованиии https? (а не http)
2. Обязательно ли наличие сертификата? (где взять как создать, и как запихать в приложение, для мобилы)
Может у кого есть живые (рабочие) примеры... То что дернул с sun.com, даже не компилится, сижу тупо смотрю в код и не понимаю % 60-70. Месяц вошкаюсь и не могу ничего родить!  smile 
Помогите плиз.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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