今天我們來談談J2ME和WebService是怎麼交互的.
首先, 說說j2me. J2ME訪問服務器主要有2種方式(當然還有別的方式)
1. HTTP方式. 這個很簡單, 比如
HttpConnection conn = (HttpConnection) Connector.open(serverURL,Connector.READ_WRITE, true);
這樣就得到一個http連接, 然後設置一些參數就可以打開DataOutputStream寫東西啦. 就不多說了.
2. 通過JSR172 (這個功能需要midp2.0以上的部分設備支持.)
我們知道JSR172是由兩個部分組成的: 1. 一個輕量級的標准XML解析器 2. Web Services的遠程調用API.
我們就先研究下J2ME是怎麼調用遠程的WebService的.
好, 我們直接跳過HelloWorld, 先從一個最簡單的<用戶登陸系統>開始吧!
首先, 寫一個Midlet(如果寫J2ME的應用,我認為用NetBeans比EclipseMe更好些, 雖然速度慢些, 其他都比Eclipse強, 比如即時API, 外部jar的導入...)
package com.joey.J2ME.demo;
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.TextFIEld;
import Javax.microedition.midlet.MIDlet;
public class Demo extends MIDlet implements Runnable, CommandListener {
private static final String EXIT_STRING = "Exiting..";
private Form form;
private Command go = new Command("登陸", Command.OK, 1);
private Command exit = new Command("退出", Command.EXIT, 0);
private Display display;
private TextField t1 = new TextField("用戶名", "",15,TextField.ANY);
private TextField t2 = new TextField("密 碼", "", 15, TextFIEld.ANY);
public void startApp() {
form = new Form("WebService測試");
form.append(t1);
form.append(t2);
form.addCommand(go);
form.addCommand(exit);
form.setCommandListener(this);
display = Display.getDisplay(this);
display.setCurrent(form);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
if (c.getCommandType() == Command.EXIT) {
this.notifyDestroyed();
} else if (c.getCommandType() == Command.OK) {
new Thread(this).start();
}
}
public void run() {
}
}
未完...