Download a file over a network in J2ME midlet

By: Eriq Tan Printer Friendly Format    

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();
    }	
  }
}


Ask a Question



Most Viewed Articles (in J2ME )

Latest Articles (in J2ME)

Comment on this tutorial

Ask a Question

Subscribe to Tutorials

Related Tutorials

Archived Comments

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

2. when i trying to build the above program it is giv
View Tutorial          By: bhagyalaxmi at 2008-10-10 23:45:45

3. when i trying this code . i am getting this error<
View Tutorial          By: sharath at 2010-04-06 00:58:29

4. Cool! Downloading the whole file with the HttpCon
View Tutorial          By: Luddite at 2010-06-26 12:26:26

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

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

7. Hi, I second that Raghav, kindly can u email me a
View Tutorial          By: SAM at 2011-03-06 05:03:09

8. how to download suport to my phone
send me

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

9. how to download suport to my phone
send me

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

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

11. Whe I compiled the above code, it sends me to the
View Tutorial          By: Koo Larbi at 2014-08-02 22:32:05