Java Tutorial/J2ME/Cookie
Deal with cookie with J2ME
<source lang="java">
import java.io.InputStream; import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; import javax.microedition.lcdui.rumand; import javax.microedition.lcdui.rumandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.TextField; import javax.microedition.midlet.MIDlet; public class HttpCookieMIDlet extends MIDlet implements CommandListener {
private Command exitCommand= new Command("Exit", Command.EXIT, 1); private Command sendCommand= new Command("Send", Command.OK, 1); private Command backCommand = new Command("Upload", Command.OK, 1); private Display display; private String URL = "http://localhost/all_http.asp"; private String sessionID; private Form mainForm; private TextField URLField = new TextField(null, URL, 250, TextField.URL); public HttpCookieMIDlet() { display = Display.getDisplay(this); } public void startApp() { mainForm = new Form("Address"); mainForm.append(URLField); mainForm.addCommand(sendCommand); mainForm.addCommand(exitCommand); mainForm.setCommandListener(this); display.setCurrent(mainForm); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { if (c == sendCommand) send(URLField.getString()); else if (c == backCommand) { URLField.setString(URL); display.setCurrent(mainForm); } else { destroyApp(false); notifyDestroyed(); } } public void send(String url) { HttpConnection hpc = null; InputStream is = null; try { hpc = (HttpConnection) Connector.open(url); if (sessionID != null) hpc.setRequestProperty("cookie", sessionID); is = hpc.openInputStream(); String cookie = hpc.getHeaderField("Set-cookie"); if (cookie != null) { int position = cookie.indexOf(";"); sessionID = cookie.substring(0, position); } int length = (int) hpc.getLength(); byte[] response = new byte[length]; is.read(response); String strResponse = new String(response); URLField.setString(strResponse); } catch (Exception e) { System.out.println("xxx :error"); } finally { try { if (is != null) is.close(); if (hpc != null) hpc.close(); } catch (Exception e) { } } }
}</source>
Use Cookie
<source lang="java">
import java.io.IOException; import java.io.InputStream; import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.rumand; import javax.microedition.lcdui.rumandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.midlet.MIDlet; public class CookieMIDlet extends MIDlet implements CommandListener, Runnable {
private Display mDisplay; private Form mForm; private String mSession; public void startApp() { mDisplay = Display.getDisplay(this); mForm = new Form("CookieMIDlet"); mForm.addCommand(new Command("Exit", Command.EXIT, 0)); mForm.addCommand(new Command("Send", Command.SCREEN, 0)); mForm.setCommandListener(this); mDisplay.setCurrent(mForm); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { if (c.getCommandType() == Command.EXIT) notifyDestroyed(); else { Form waitForm = new Form("Connecting..."); mDisplay.setCurrent(waitForm); Thread t = new Thread(this); t.start(); } } public void run() { String url = getAppProperty("CookieMIDlet-URL"); try { HttpConnection hc = (HttpConnection) Connector.open(url); if (mSession != null) hc.setRequestProperty("cookie", mSession); InputStream in = hc.openInputStream(); String cookie = hc.getHeaderField("Set-cookie"); if (cookie != null) { int semicolon = cookie.indexOf(";"); mSession = cookie.substring(0, semicolon); } int length = (int) hc.getLength(); byte[] raw = new byte[length]; in.read(raw); String s = new String(raw); Alert a = new Alert("Response", s, null, null); a.setTimeout(Alert.FOREVER); mDisplay.setCurrent(a, mForm); in.close(); hc.close(); } catch (IOException ioe) { Alert a = new Alert("Exception", ioe.toString(), null, null); a.setTimeout(Alert.FOREVER); mDisplay.setCurrent(a, mForm); } }
}</source>