Download a file over a network in J2ME midlet

By: Eriq Tan  

This sample code can be used to download and view a file over a network in a TextBox component Through an httpConnection,

Important Points:

1)   One benefit of using an HttpConnection (as compared to InputStream or StreamConnection) is the availability of a method to check for the length of the remote data. The data can then be read in one fell-swoop, in contrast to reading one character/byte at a time.

2)      Before leaving the viewFile() method, check to the status of the input stream and the httpConnection, and close if necessary. 

3)   This example is written for version 1.0.3 of MIDP and CLDC

 

Java Code:

/*--------------------------------------------------
* FileViewer.java
*
* Download and view a file over a network 
*-------------------------------------------------*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;

public class FileViewer extends MIDlet implements CommandListener
{
  private Display display;	    // Reference to Display object
  private TextBox tbViewer;  // View file contents in a textbox
  private Command cmView;    // Command to view file
  private Command cmExit;    // Command to exit
  private String url = "http://www.corej2me.com/midpbook_v1e1/scratch/fileViewer.hlp";  

  public FileViewer()
  { 
    display = Display.getDisplay(this);
    
    // Define commands
    cmView = new Command("View", Command.SCREEN, 2);
    cmExit = new Command("Exit", Command.EXIT, 1);

    tbViewer = new TextBox("Viewer", "", 250, TextField.ANY);
    tbViewer.addCommand(cmView);
    tbViewer.addCommand(cmExit);
    tbViewer.setCommandListener(this);    
  }

  public void startApp()
  {
    display.setCurrent(tbViewer);
  }    

  private void viewFile() throws IOException
  {
    HttpConnection http = null;
    InputStream iStrm = null;
    
    try
    {
      // Create the connection
      http = (HttpConnection) Connector.open(url);
      
      //----------------
      // Client Request
      //----------------
      // 1) Send request method
      http.setRequestMethod(HttpConnection.GET);
      
      // 2) Send header information (this header is optional)
      http.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0");
      
      // 3) Send body/data - No data for this request
      
      //----------------
      // Server Response
      //----------------
      // 1) Get status Line
      System.out.println("Msg: " + http.getResponseMessage());                  
      System.out.println("Code: " + http.getResponseCode());                
      
      // 2) Get header information 
      if (http.getResponseCode() == HttpConnection.HTTP_OK)
      {
        // 3) Get data (show the file contents)
        iStrm = http.openInputStream();
        int length = (int) http.getLength();
        if (length > 0)
        {
          byte serverData[] = new byte[length];
          iStrm.read(serverData);
          tbViewer.setString(new String(serverData));
        }
      }
    }
    finally
    {
      // Clean up
      if (iStrm != null)
        iStrm.close();
      if (http != null)
        http.close();
    }
  }

  public void pauseApp()
  { }

  public void destroyApp(boolean unconditional)
  { }

  public void commandAction(Command c, Displayable s)
  {
    if (c == cmView)
    {
      try
      {
        viewFile();
      }
      catch (Exception e)
      {
        System.out.println(e.toString());
      }
    }
    else if (c == cmExit)
    {
      destroyApp(false);
      notifyDestroyed();
    }	
  }
}



Archived Comments

1. Whe I compiled the above code, it sends me to the "Viewer" and when I select "View&qu
View Tutorial          By: Koo Larbi at 2014-08-02 22:32:05

2. no pgmj hjg ahj qapj jgdhd bdjmgt khe.a.d phtg0ad. ad,htgwg ah
View Tutorial          By: ram at 2013-08-21 03:27:05

3. how to download suport to my phone
send me aplication to downloaded j2me code and java midlet

View Tutorial          By: dede.mouljadie at 2012-04-28 09:42:45

4. how to download suport to my phone
send me aplication to downloaded j2me code and java midlet

View Tutorial          By: dede.mouljadie at 2012-04-28 09:39:21

5. Hi, I second that Raghav, kindly can u email me a compiled files as well, am doin a research about r
View Tutorial          By: SAM at 2011-03-06 05:03:09

6. samples
View Tutorial          By: kamlesh at 2010-11-18 03:33:09

7. Can you mail me the compiled files, Please. Thank u.
View Tutorial          By: raghav at 2010-09-14 21:23:17

8. Cool! Downloading the whole file with the HttpConnection length method. Nice!
View Tutorial          By: Luddite at 2010-06-26 12:26:26

9. when i trying this code . i am getting this error

java.lang.NoClassDefFoundError: com

View Tutorial          By: sharath at 2010-04-06 00:58:29

10. when i trying to build the above program it is giving warning on my console like
"To avo

View Tutorial          By: bhagyalaxmi at 2008-10-10 23:45:45

11. It works like a charm. Thanks a lot.
View Tutorial          By: Balram at 2008-08-22 21:18:44


Most Viewed Articles (in J2ME )

Latest Articles (in J2ME)

Comment on this tutorial