今天我們來談談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() { } }
未完...