2.1.1 WSClientMIDlet.java
package com.jagie.j2me.ws;
import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /**
*
Title:
*Description:
*
Copyright: Copyright (c) 2004
*Company:
* @author not attributable * @version 1.0 */public class WSClientMIDlet extends MIDlet {
static WSClientMIDlet instance;
public WSClientMIDlet() { instance = this; }
public void startApp() {
Display display=Display.getDisplay(this); DisplayForm displayable = new DisplayForm(); display.setCurrent(displayable); }
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
public static void quitApp() { instance.destroyApp(true); instance.notifyDestroyed(); instance = null; } }
2.1.2 DisplayForm.java
package com.jagie.j2me.ws;
import javax.microedition.lcdui.*; /**
*
Title:
*Description:
*
Copyright: Copyright (c) 2004
*Company:
* @author not attributable * @version 1.0 */public class DisplayForm extends Form
implements CommandListener, Runnable { private TextField textField1; private Thread t;
public DisplayForm() {
super(\字符转换webservice测试\
try { jbInit(); }
catch (Exception e) { e.printStackTrace(); } }
private void jbInit() throws Exception {
// Set up this Displayable to listen to command events textField1 = new TextField(\ this.setCommandListener(this);
textField1.setLabel(\待处理的字符串是:\ textField1.setConstraints(TextField.ANY); textField1.setInitialInputMode(\ setCommandListener(this);
// add the Exit command
addCommand(new Command(\ addCommand(new Command(\ this.append(textField1); }
public void commandAction(Command command, Displayable displayable) {
if (command.getCommandType() == Command.EXIT) { WSClientMIDlet.quitApp(); }
else if (command.getCommandType() == Command.OK) { t = new Thread(this); t.start(); } }
public void run() {
String s1 = textField1.getString();
String s2 = new StringProcessorStub().process(s1);
StringItem resultItem = new StringItem(\处理后的字符串是:\ this.append(resultItem); } }
2.1.3 StringProcessorStub.java
package com.jagie.j2me.ws;
import org.ksoap.*;
import org.ksoap.transport.HttpTransport; /**
*
Title:
*Description:
*
Copyright: Copyright (c) 2004
*Company:
* @author not attributable * @version 1.0 */public class StringProcessorStub {
public StringProcessorStub() { }
public String process(String name) { String result = null; try {
SoapObject rpc = new SoapObject
(\
rpc.addProperty(\
HttpTransport ht = new HttpTransport
(\
result = (String) ht.call(rpc); }
catch (Exception e) { e.printStackTrace(); }
return result; } }
测试客户端
现在,试着在你的ide里运行WSClientMIDlet,如果调用成功,则出现以下画面: 总结
有了ksoap,手机上调用web service就很容易了。不过要注意的是,使用网络连接这种费时操作的时候,一定要单独开线程进行,不要直接写在commandAction()方法里,否则出现画面被锁住的情况。 参考资料
http://ksoap.enhydra.org/software/downloads/samples/StockQuoteDemo.java