Java Tutorial/J2ME/Cookie

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

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