J2ME与Web
更新时间:2024-07-05 16:19:01 阅读量: 综合文库 文档下载
- j2me模拟器推荐度:
- 相关推荐
J2ME与Web Service-KSOAP快速上手
作者: 文章来源:
发布日期:2007年04月10日 浏览次数:94次
http://www.jspcn.net/htmlnews/B20070807102235.html
摘要
本文用一个简明的例子,阐述了如何在手机上用KSOAP API来访问本地服务器上的Web Service。并且给出了详细的操作步骤和全部的Server,Client源代码。
1. 服务端
这次要发布的web service非常简单。它的功能是把从客户端传入的字符串中的小写字母转变成大写字母,再返回给客户端。Soap 服务器采用apache的AXIS(可以从http://ws.apache.org/axis/下载),应用服务器可以选用各种servlet 容器,我这里采用的是weblogic。
1.1 实现类的源代码
// StringProcessor.java package com.jagie.j2me.ws;
public class StringProcessor { public StringProcessor() { }
public String process(String name){ return name.toUpperCase(); } }
1.2 发布步骤
1.准备一个目录作为web application的发布目录,我这里的这个目录叫jagiews,这个目录的全路径中最好不要有空格和中文。我的发布目录结构如下:
2.编译StringProcessor.java,把生成的StringProcessor.class置于: jagiewsWEB-INFclassescomjagiej2mews目录下。
3.在jagiewsWEB-INFlib 文件夹中置入以下axis服务器需要的jar文件 axis.jar,axis-ant.jar,commons-discovery.jar,commons-logging.jar,jaxrpc.jar,log4j-1.2.8.jar,saaj.jar ,wsdl4j.jar。这些文件可以在http://ws.apache.org/axis/下载,如图所示:
4.在jagiewsWEB-INF目录下增加2个发布描述文件:server-config.wsdd,web.xml。
#server-config.wsdd
value=\ type=\ type=\ type=\ type=\ type=\ # web.xml PUBLIC \ \ org.apache.axis.transport.http.AxisServlet org.apache.axis.transport.http.AdminServlet org.apache.axis.monitor.SOAPMonitorService 5.开启你的application server,把目录jagiews发布为一个名叫jagiews的web application。 6.测试:打开浏览器,输入网址(这里使用的是weblogic,其他的服务器请酌情修改): http://localhost:7001/jagiews/services/StringProcess?method=process&name=qqqq,如果浏览器能在返回的xml文档中显示字符串\,恭喜你,你的web service发布成功了。如果发布不成功,请按以上发布步骤检查一下。 2. 客户端 客户端自然是用MIDlet了,不过用什么方式来访问web service呢?其实有3种访问方式 直接用HttpConnection访问 http://localhost:7001/jagiews/services/StringProcess?method=process&name=qqqq,得到xml的返回数据,然后用kxml(http://kxml.enhydra.org/)解析,得到返回值。 如果你的手机支持MIDP2.0的话,可以考虑使用JSR172。 用ksoap api。 这里讲述第三种方式。使用之前,你需要从 http://ksoap.enhydra.org/software/downloads/index.html下载稳定的ksoap包,置于你的classpath中。 2.1 客户端源代码 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: 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: 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: 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
正在阅读:
J2ME与Web07-05
鄂教版三年级心理健康教育教案09-10
西方经济学考试复习大纲(整理版)10-05
曾经发生的小事11-21
有关赞美老师诗歌03-30
ARAMIS 三维光学应变测量系统04-22
DIY 法国高商EDHEC申请09-13
豆芽生长记作文350字02-04
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- J2ME
- Web
- 全国高职高专教育师资培训单位
- 荆轲刺秦王说课稿
- 谈几种常用的语文新课导入方法
- 第31届中国数学奥林匹克获奖名单
- 怎样可以让胸部长大点
- 施工技术习题集
- 三位数除以一位数的笔算除法 教案
- 2018-2019年小学英语外研版(一起)《六年级下》《Module 1》同
- 16尔雅中国古代史作答案大全
- 绍兴市法律服务所名录2018版138家
- 大学计算机基础错题
- 人教版五年级上册语文教案(含语文园地)
- 中考文言文阅读复习策略
- 优秀端午节活动策划方案
- 工商管理持证考试--大纲
- 配套K12上海市黄浦区2018年中考物理二模试卷(含解析)
- 稀浆封层配合比报告(ES-2型)
- 拟公示为20162017宁德守合同重信用企业
- 七年级数学下册4、3探索三角形全等的条件(第3课时)学案(无答
- 压盖级进模设计及模具设计