Java Tutorial/J2ME/Cookie

Материал из Java эксперт
Перейти к: навигация, поиск

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>