今天我们来谈谈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() {
}
}
未完...