Java Tutorial/J2ME/Cookie
Версия от 17:44, 31 мая 2010; (обсуждение)
Deal with cookie with J2ME
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) {
}
}
}
}
Use Cookie
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);
}
}
}