Ejemplo de un midlet que saca datos de la red, en concreto haciendo peticiones a una URL.

package hello;

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

/**
 * @author luser
 */
public class HttpRequestTest extends MIDlet implements CommandListener {
    private Command exitCommand, goCommand, backCommand;
private Display display;
private Form locationScreen;
private Form resultScreen;
private TextField urlField;
private StringItem itemResultado;

    /**
     * HttpRequestTest
     * constructor
     */
    public HttpRequestTest ()
    {
        // Pillamos la pantalla para el MIDlet
        display = Display.getDisplay(this);

        // Creamos comandos esenciales
        exitCommand = new Command("Exit", Command.EXIT, 2);
        goCommand = new Command("Go", Command.OK, 2);
        backCommand = new Command("Back", Command.BACK, 2);

        // Formulario para tomar la URL
        locationScreen = new Form("Indica una URL destino");
        urlField = new TextField("url", "http://localhost/Test.txt", 25, TextField.ANY);
        locationScreen.append(urlField);

        // Comandos salida y continuar
        locationScreen.addCommand(exitCommand);
        locationScreen.addCommand(goCommand);
        locationScreen.setCommandListener(this);

        // Creamos la pantalla de resultado
        resultScreen = new Form("URL data:");
        itemResultado = new StringItem("", "");

        resultScreen.append(itemResultado);
    
        // Metemos los comandos para volver
        resultScreen.addCommand(backCommand);
        resultScreen.setCommandListener(this);
    }

    /**
     * startApp
     * se ejecuta al inicio de la aplicación
     */
    public void startApp() {


        // Establecemos el formulario en la pantalla
        display.setCurrent(locationScreen);
    }

   /**
     * pauseApp
     * se ejecuta en caso de pausar la aplicación
     */
    public void pauseApp() {
    }

    /**
     * destroyApp
     * se ejecuta al terminar la aplicación
     */
    public void destroyApp(boolean unconditional) {
    }

      /**
     * commandAction
     * captura los comandos.
     */
    public void commandAction(Command c, Displayable s) {
        String html = "";

        if (c == exitCommand) {
        destroyApp(false);
        notifyDestroyed();
        }
        else if (c == goCommand) {
        // Llamamos a la función que saca los datos
            html = getData(urlField.getString());
             display.setCurrent(resultScreen);
             itemResultado.setText(html);
        }else if (c == backCommand) {
            // Volvemos al inicio
            display.setCurrent(locationScreen);
        }
       
      }

    /**
     * getData
     * Solicita una URL y devuelve un String con el resultado
     */
       private String getData(String url) {
            StreamConnection conn = null;
            InputStream in = null;
            StringBuffer data = new StringBuffer();
            
            try {
            // Abrimos la conexión así de fácil
            conn = (StreamConnection)Connector.open(url);

            // Sacamos un InoutStream de la conexión
            in = conn.openInputStream();

            // Vamos leyendo caracteres y los metemos en un string
            int ch;
            while (((char)(ch = in.read()) != '\003') && (ch != -1) )
            {     
             data.append((char)ch);
            }

            // Si está vacío, msg al canto con alert
            if (data.toString().equals(""))
            {
             display.setCurrent(new Alert("Url","En esa URL no retornó nada.", null,AlertType.ERROR));
            }

            return data.toString();

            } catch (IOException e) {
             return "La conexión no se pudo establecer:" + e.getMessage();
            }
        }
}