Join Now
Quality Rating:
  • Currently 5.0 / 5
(5.0 / 5 - 1 vote cast)
Expertise Level:
  • Currently 5.0 / 5
(5.0 / 5 - 1 vote cast)

This page was last modified 00:04, 20 May 2008.

Fetching data from server

From Forum Nokia Wiki

The basic purpose of this article is to download and view a file.

Important Points

  • 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.
  • Before leaving the viewFile() method, check to the status of the input stream and the httpConnection, and close if necessary.

Sample code for client side.

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

-Kartik Trivedi

 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtopicQUqfnTopicZjavaQ
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX