利用GET方式实现Web登录认证的MIDLET

 JSP网页:
<%@page contentType="text/html;charset=GBK"  session="true"%>
<%
//获取用户名称和密码
String username=request.getParameter("username");
String password=request.getParameter("password");

//如果两者相等,表示认证成功
if(username.equals(password)) {
    out.println("success");
} else {
    out.println("error");
}
%>

MIDLET程序:
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;

import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;

public class Exec extends MIDlet implements CommandListener {
    Form form = new Form("练习");
    Display display = null;
    TextBox tb = null;
    TextField tfUser = new TextField("用户名称", "", 20, TextField.ANY);
    TextField tfPassword = new TextField("用户名称", "", 20, TextField.ANY);
    InputStream in = null;
    Command ok = new Command("开始", Command.OK, 1);

    public Exec() {
        display = Display.getDisplay(this);
    }

    public void startApp() {
        form.append(tfUser);
        form.append(tfPassword);
        form.addCommand(ok);
        form.setCommandListener(this);
        display.setCurrent(form);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public void commandAction(Command com, Displayable disp) {
        Downloader downloader = new Downloader(tfUser.getString(),tfPassword.getString(), this);
        Thread thread = new Thread(downloader);
        thread.start();
    }

    public void setTb(TextBox tb) {
        this.tb = tb;
        display.setCurrent(tb);
    }
}

class Downloader implements Runnable {
    String username;
    String password;
    Exec midlet;

    public Downloader(String username, String password, Exec midlet) {
        this.username = username;
        this.password = password;
        this.midlet = midlet;
    }

    public void run() {
        InputStream is = null;
        HttpConnection c = null;
        StringBuffer sb = new StringBuffer();
        String result = null;
        try {
            c = (HttpConnection) Connector
                    .open("http://localhost:8084/WebApplication2/action.jsp?username="
                            + username + "&password=" + password);
            c.setRequestMethod(HttpConnection.GET);
            int status = c.getResponseCode();
            if (status != HttpConnection.HTTP_OK)
                throw new IOException("Response code not ok");
            else {
                is = c.openInputStream();// 打开输入流,读入数据
                int ch;
                while ((ch = is.read()) != -1) {
                    sb.append((char) ch);
                }
            }
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        } finally {
            if (is != null)
                try {
                    is.close();
                } catch (IOException e) {
                    System.out.println(e.getMessage());
                }
            if (c != null)
                try {
                    c.close();
                } catch (IOException e) {
                    System.out.println(e.getMessage());
                }
        }
        try {
            result = new String(sb.toString().getBytes("ISO-8859-1"), "GB2312");
        } catch (UnsupportedEncodingException e) {
            System.out.println(e.getMessage());
        }
        TextBox tb = new TextBox("测试", result, result.length(), TextField.ANY);
        midlet.setTb(tb);
    }
}

你可能感兴趣的:(thread,Web,String,command,null,textbox)