How to use Http POST request in Java ME
Article Metadata
Code Example
Source file: Media:HttpPOST.zip
Article
Created: senthilkumar05
(18 Dec 2007)
Updated: grift
(03 Apr 2013)
Last edited: hamishwillee
(03 Apr 2013)
This J2ME program demonstrates how to establish a Http connection and uses it to send a POST request to web server.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;
public class HttpPOST extends MIDlet implements CommandListener {
/** the default value for the url string is * * user can change it to some other urls within the application* */
private static String defaultURL = "http://localhost";
// GUI component for user to enter web url
private Display myDisplay = null;
private Form mainScreen;
private TextField requestField;
// GUI component for displaying header information
private Form resultScreen;
private StringItem resultField;
// the "send" button used on mainScreen
Command sendCommand = new Command("SEND", Command.OK, 1);
// the "back" button used on resultScreen
Command backCommand = new Command("BACK", Command.OK, 1);
public HttpPOST()
{
// initializing the GUI components for entering web url
myDisplay = Display.getDisplay(this);
mainScreen = new Form("Type in a URL:");
requestField = new TextField(null, defaultURL, 100, TextField.URL);
mainScreen.append(requestField);
mainScreen.addCommand(sendCommand);
mainScreen.setCommandListener(this);
}
public void startApp() {myDisplay.setCurrent(mainScreen);}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable s)
{
// when user clicks on "send" button on mainScreen
if (c == sendCommand)
{
// retrieving the web url that user enteredString
String urlstring = requestField.getString();
// sending a POST request to web serverString
String resultstring = sendPostRequest(urlstring);
// displaying the page content retrieved from web server
resultScreen = new Form("POST Result:");
resultField = new StringItem(null, resultstring);
resultScreen.append(resultField);
resultScreen.addCommand(backCommand);
resultScreen.setCommandListener(this);
myDisplay.setCurrent(resultScreen);
}
else if (c == backCommand)
{
// do it all over again
requestField.setString(defaultURL);
myDisplay.setCurrent(mainScreen);
}
}
// send a POST request to web server
public String sendPostRequest(String urlstring)
{
HttpConnection hc = null;
DataInputStream dis = null;
DataOutputStream dos = null;
String message = "";
// specifying the query string
String requeststring = "request=gettimestamp";
try
{
// openning up http connection with the web server
// for both read and write access
hc = (HttpConnection) Connector.open(urlstring, Connector.READ_WRITE);
// setting the request method to POST
hc.setRequestMethod(HttpConnection.POST);
// obtaining output stream for sending query string
dos = hc.openDataOutputStream();
byte[] request_body = requeststring.getBytes();
// sending query string to web server
for (int i = 0; i < request_body.length; i++)
{
dos.writeByte(request_body[i]);
}
// flush outdos.flush();
// obtaining input stream for receiving HTTP response
dis = new DataInputStream(hc.openInputStream());
// reading the response from web server character by character
int ch;
while ((ch = dis.read()) != -1)
{
message = message + (char) ch;
}
}
catch (IOException ioe)
{
message = "ERROR";
}
finally
{
// freeing up i/o streams and http connection
try
{
if (hc != null)
hc.close();
}
catch (IOException ignored)
{
}
try
{
if (dis != null)
dis.close();
}
catch (IOException ignored)
{
}
try
{
if (dos != null)
dos.close();
}
catch (IOException ignored)
{
}
}
return message;
}
}


Hamishwillee - Thanks for the upload grift
Hi Grift
Thanks for adding the example code - that is certainly a significant update. Can you please confirm what platform versions and devices you tested this on, and what SDKs? I will then update the article metadata appropriately.
FYI, I also added an update timestamp to the articlemetadata. The update is for major revisions and changes to the article, and its important to include the timestamp so that people know that the article is current at the date you put in, not just when it was created. It is usual also to update the ArticleMetadata with the SDK, devices tested and versions so that people also know it works on current devices. Sometimes you'll come across an old article that you don't need to update but which works on current devices - in this case you can do the same updates to articlemedatadata but instead update the "reviewed-by" and "reviewed-timestamp" fields (again, so people know the article is still valid)
Thanks very much!
regards
Hhamishwillee 01:31, 3 April 2013 (EEST)