#ff0000 12  2005 . - #000655  HTTP   MIDP.     
#def   ,       ,      .     ,         .  ,    ,     -   ,        .        .   ,    ,      ,   .
 ,          ,       .    ,     ,    .  ,    .           . ,      canvas,    keyPressed   ,   .          ,      .  ,     ,            .    ,     . (      ,       .)
    ,           .        ,         ,      .
 ,             .   :    ,    ,    .  ,                .
     :  HTTP ,   HttpConnection,     MIDP.      ,   .    ,   ,      .        ,        .      .     ,      ,       ,     "".      ,         HTTP .              .        HTTP    Web .
-----
import java.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.io.*;

//  ,    
//   URL       
//  .     
//  ,   HTTP .

public class HttpLogger extends MIDlet {

    private Display display;

    private Command exitCommand =
               new Command( "", Command.EXIT, 1 );
    private Command okCommand =
               new Command( "OK", Command.OK, 1 );
    private Command cancelCommand =
               new Command( "", Command.CANCEL, 1 );

    private URLEntry mainForm;


    public HttpLogger(){
    }

    protected void destroyApp( boolean unconditional )
                      throws MIDletStateChangeException {
        exitMIDlet();
    }

    protected void pauseApp(){
    }

    protected void startApp()
                      throws MIDletStateChangeException {
        if( display == null ){
            initMIDlet();
        }
    }

    private void initMIDlet(){
        display = Display.getDisplay( this );
        mainForm = new URLEntry();
        display.setCurrent( mainForm );
    }

    public void exitMIDlet(){
        notifyDestroyed();
    }

    //      .
     void displayError( Throwable e, Displayable next ){
        Alert a = new Alert( "" );
        a.setString( e.toString() );
        a.setTimeout( Alert.FOREVER );
        display.setCurrent( a, next );
    }

    //    URL  .

    class URLEntry extends TextBox
                   implements CommandListener {

        URLEntry(){
            super( " URL:", "java.sun.com",
                   100, 0 );
            addCommand( exitCommand );
            addCommand( okCommand );
            setCommandListener( this );
        }

        public void commandAction( Command c,
                                   Displayable d ){
            if( c == exitCommand ){
                exitMIDlet();
            } else if( c == okCommand ){
                try {
                    HttpConnection conn =
                      (HttpConnection)
                      Connector.open( "http://" +
                                      getString() );
                    display.setCurrent(
                          new Logger( this, conn ) );
                }
                catch( IOException e ){
                    displayError( e, this );
                }
            }
        }
    }

    //  ,   .
    //      .
    //      , 
    //   HTTP .
    //   ""   .
    class Logger extends Form
                 implements Runnable, CommandListener {
        private Displayable    next;
        private HttpConnection conn;
        private StringItem     text =
                     new StringItem( null, "" );

        Logger( Displayable next,
                HttpConnection conn ){
            super( "HTTP Log" );

            this.next = next;
            this.conn = conn;

            addCommand( cancelCommand );
            setCommandListener( this );

            append( text );

            Thread t = new Thread( this );
            t.start();
        }


        //  .      .

        public void commandAction( Command c,
                                   Displayable d ){
                    display.setCurrent( next );

            try {
                conn.close();
            }
            catch( IOException e ){
                displayError( e, next );
            }
        }

        //     .

        public void run(){
            update( "Connecting to " + conn.getURL() );

            try {
                int rc = conn.getResponseCode();
                update( "Response code: " + rc );
                update( "Response message: " +
                         conn.getResponseMessage() );

                String key;

                for( int i = 0;
                     ( key =
                       conn.getHeaderFieldKey( i ) )
                                             != null;
                     ++i ){
                    update( key + ": " +
                            conn.getHeaderField( i ) );
                }
            }
            catch( IOException e ){
                update( "Caught exception: " +
                        e.toString() );
            }

            removeCommand( cancelCommand );
            addCommand( okCommand );
        }

 //   .  ,    .

        void update( String line ){
            if( display.getCurrent() != this ) return;

            String       old = text.getText();
            StringBuffer buf = new StringBuffer();

            buf.append( old );
            if( old.length() > 0 ){
                buf.append( '\n' );
            }

            buf.append( line );
            text.setText( buf.toString() );
        }
    }
}
-----
   ,        AWT ,     Swing, MIDP      .       ,      ,     .
#0000ff : Eric Giguere #ff0000 http://www.ericgiguere.com/
#0000ff : Alex