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