亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

J2ME與WebService-KSOAP的羅曼史

2019-11-18 16:21:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
J2ME與Web Service-KSOAP的羅曼史

----J2ME與Web Service-KSOAP的快速上手

作者:Cleverpig


版權(quán)聲明:可以任意轉(zhuǎn)載,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
原文地址:
http://www.matrix.org.cn/resource/article/43/43662_J2ME_KSOAP.Html
關(guān)鍵詞: j2me soap webservice

1、服務(wù)端

這次要發(fā)布的web service非常簡(jiǎn)單。它的功能是把從客戶(hù)端傳入的字符串中的小寫(xiě)字母轉(zhuǎn)變成大寫(xiě)字母,再返回給客戶(hù)端。

Soap 服務(wù)器采用apache的AXIS(可以從http://ws.apache.org/axis/下載),應(yīng)用服務(wù)器可以選用各種servlet 容器,我這里采用的是weblogic。

1.1 實(shí)現(xiàn)類(lèi)的源代碼:


// StringPRocessor.java
package com.jagie.j2me.ws;

public class StringProcessor
{
  public StringProcessor()
  {
  }

  public String process(String name)
  {
    return name.toUpperCase();
  }

}


1.2 發(fā)布步驟

1.準(zhǔn)備一個(gè)目錄作為web application的發(fā)布目錄,我這里的這個(gè)目錄叫jagiews,這個(gè)目錄的全路徑中最好不要有空格和中文。我的發(fā)布目錄結(jié)構(gòu)如下:

2.編譯StringProcessor.java,把生成的StringProcessor.class置于: /jagiews/WEB-INF/classes/com/jagie/j2me/ws目錄下。

3.在jagiews/WEB-INF/lib 文件夾中置入以下axis服務(wù)器需要的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.在jagiews/WEB-INF目錄下增加2個(gè)發(fā)布描述文件:
server-config.wsdd,web.xml。

#server-config.wsdd

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns=
"http://xml.apache.org/axis/wsdd/"
xmlns:java=
"http://xml.apache.org/axis/wsdd/providers/java">
<globalConfiguration>
  <parameter name=
  "adminPassWord" value="admin"/>
  <parameter name=
  "attachments.Directory"
  value="C:/Program Files
  /Apache Tomcat 4.0/webapps
  /axis/WEB-INF/attachments"/>
  <parameter name=
  "attachments.implementation"
  value="org.apache.axis.
  attachments.AttachmentsImpl"/>
  <parameter name=
  "sendXsiTypes"
  value="true"/>
  <parameter name=
  "sendMultiRefs"
  value="true"/>
  <parameter name=
  "sendXMLDeclaration"
  value="true"/>
  <parameter name=
  "axis.sendMinimizedElements"
  value="true"/>
  <requestFlow>
   <handler type=
   "java:org.apache.axis.handlers.JWSHandler">
    <parameter
name="scope"
value="session"/>
   </handler>
   <handler type=
   "java:org.apache.axis.handlers.JWSHandler">
    <parameter
name="scope"
value="request"/>
    <parameter
name="extension"
value=".jwr"/>
   </handler>
  </requestFlow>
</globalConfiguration>
<handler name=
"LocalResponder"
type="java:org.apache.axis.
transport.local.LocalResponder"/>
<handler name="URLMapper"
type="java:org.apache.axis.
handlers.http.URLMapper"/>
<handler name="RPCDispatcher"
type="java:org.apache.axis.
providers.java.RPCProvider"/>
<handler name="Authenticate"
type="java:org.apache.axis.
handlers.SimpleAuthenticationHandler"/>
<handler name="MsgDispatcher"
type="java:org.apache.axis.
providers.java.MsgProvider"/>

<service name="AdminService"
provider="java:MSG">
  <parameter name="allowedMethods"
  value="AdminService"/>
  <parameter name="enableRemoteAdmin"
  value="false"/>
  <parameter name="className"
  value="org.apache.axis.utils.Admin"/>
  <namespace>
  http://xml.apache.org/axis/wsdd/
  </namespace>
</service>
<service name="Version"
provider="java:RPC">
  <parameter name="allowedMethods"
  value="getVersion"/>
  <parameter name="className"
  value="org.apache.axis.Version"/>
</service>
<!--  your service  begin-->
  <service name="StringProcess"
  provider="java:RPC">
  <parameter name="allowedMethods"
  value="process"/>
  <parameter name="className"
  value="com.jagie.j2me.
  ws.StringProcessor"/>
</service>
<!-- your service  end -->
<transport name="http">
  <requestFlow>
   <handler type="URLMapper"/>
   <handler type=
   "java:org.apache.axis.handlers.
   http.HTTPAuthHandler"/>
  </requestFlow>
</transport>
<transport name="local">
  <responseFlow>
   <handler type="java:org.apache.axis.
   transport.local.LocalResponder"/>
  </responseFlow>
</transport>
</deployment>

# web.xml

<?xml version="1.0"
encoding="ISO-8859-1"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems,
Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com
/j2ee/dtds/web-app_2.2.dtd">

<web-app>
  <display-name>Apache-Axis</display-name>
  <servlet>
    <servlet-name>AxisServlet</servlet-name>
    <display-name>Apache-Axis
Servlet</display-name>
    <servlet-class>
        org.apache.axis.transport.http.AxisServlet
    </servlet-class>
  </servlet>

  <servlet>
    <servlet-name>AdminServlet</servlet-name>
    <display-name>Axis Admin Servlet</display-name>
    <servlet-class>
        org.apache.axis.transport.http.AdminServlet
    </servlet-class>
    <load-on-startup>100</load-on-startup>
  </servlet>

  <servlet>
    <servlet-name>SOAPMonitorService</servlet-name>
    <display-name>SOAPMonitorService</display-name>
    <servlet-class>
        org.apache.axis.monitor.SOAPMonitorService
    </servlet-class>
    <init-param>
      <param-name>SOAPMonitorPort</param-name>
      <param-value>5001</param-value>
    </init-param>
    <load-on-startup>100</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/servlet/AxisServlet</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>*.jws</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>SOAPMonitorService</servlet-name>
    <url-pattern>/SOAPMonitor</url-pattern>
  </servlet-mapping>

<!-- uncomment this if you want the admin servlet -->
<!--
  <servlet-mapping>
    <servlet-name>AdminServlet</servlet-name>
    <url-pattern>/servlet/AdminServlet
</url-pattern>
  </servlet-mapping>
-->

    <!-- currently the W3C havent settled
on a media type for WSDL;
    http://www.w3.org/TR/2003/
WD-wsdl12-20030303/#ietf-draft
    for now we go with the basic
'it's XML' response -->
  <mime-mapping>
    <extension>wsdl</extension>
     <mime-type>text/xml</mime-type>
  </mime-mapping>
  <mime-mapping>
    <extension>xsd</extension>
    <mime-type>text/xml</mime-type>
  </mime-mapping>
</web-app>


5.開(kāi)啟你的application server,把目錄jagiews發(fā)布為一個(gè)名叫jagiews的web application。

6.測(cè)試:打開(kāi)瀏覽器,輸入網(wǎng)址(這里使用的是weblogic,其他的服務(wù)器請(qǐng)酌情修改): http://localhost:7001/jagiews/services/StringProcess?method=process&name=QQqq,如果瀏覽器能在返回的xml文檔中顯示字符串"QQQQ",恭喜你,你的web service發(fā)布成功了。如果發(fā)布不成功,請(qǐng)按以上發(fā)布步驟檢查一下。

2、客戶(hù)端

客戶(hù)端自然是用MIDlet了,不過(guò)用什么方式來(lái)訪問(wèn)web service呢?其實(shí)有3種訪問(wèn)方式

直接用HttpConnection訪問(wèn) http://localhost:7001/jagiews/services/StringProcess?method=process&name=qqqq,得到xml的返回?cái)?shù)據(jù),然后用kxml(http://kxml.enhydra.org/)解析,得到返回值。

如果你的手機(jī)支持MIDP2.0的話,可以考慮使用JSR172。

用ksoap api。

這里講述第三種方式。使用之前,你需要從 http://ksoap.enhydra.org/software/downloads/index.html下載穩(wěn)定的ksoap包,置于你的classpath中。

2.1 客戶(hù)端源代碼

2.1.1 WSClientMIDlet.java


package com.jagie.j2me.ws;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c)
2004</p>
* <p>Company: </p>
* @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.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c)
2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/

public class DisplayForm
    extends Form
    implements CommandListener,
Runnable
{
  private TextField textField1;
  private Thread t;

  public DisplayForm()
  {
    super("字符轉(zhuǎn)換webservice測(cè)試");

    try
{
      jbInit();
    }
    catch (Exception e)
{
      e.printStackTrace();
    }

  }

  private void jbInit()
  throws Exception
  {
    // Set up this Displayable
to listen to command events
    textField1 = new TextField
("", "", 15, TextField.ANY);
    this.setCommandListener(this);
    textField1.setLabel
("待處理的字符串是:");
    textField1.setConstraints
(TextField.ANY);
    textField1.setInitialInputMode
("Tester");
    setCommandListener(this);
    // add the Exit command
    addCommand(new Command
("Exit", Command.EXIT, 1));
    addCommand(new Command
("Process", Command.OK, 1));
    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("處理后的字符串是:", s2);
    this.append(resultItem);
}
}


2.1.3 StringProcessorStub.java


package com.jagie.j2me.ws;

import org.ksoap.*;
import org.ksoap.transport.HttpTransport;

/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/

  public class StringProcessorStub
  {
    public StringProcessorStub()
{
  }

  public String process(String name)
  {
    String result = null;
    try
{

      SoapObject rpc =
   new SoapObject
    ("http://localhost:
7001/jagiews/services/StringProcess",
"process");

      rpc.addProperty("name", name);

      HttpTransport ht =
   new HttpTransport
    ("http://localhost:7001/
jagiews/services/StringProcess",
"");

      result = (String) ht.call(rpc);

    }
    catch (Exception e) {
      e.printStackTrace();
    }

    return result;

  }
}


總結(jié)

有了ksoap,手機(jī)上調(diào)用web service就很容易了。不過(guò)要注意的是,使用網(wǎng)絡(luò)連接這種費(fèi)時(shí)操作的時(shí)候,一定要單獨(dú)開(kāi)線程進(jìn)行,不要直接寫(xiě)在commandAction()方法里,否則出現(xiàn)畫(huà)面被鎖住的情況。進(jìn)入討論組討論。

(出處:http://www.49028c.com)



發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产精品成av人在线视午夜片| 成人av在线一区二区三区| 中文字幕一区二区三区人妻四季| 先锋影音资源综合在线播放av| jizz久久久久久| 久久精品亚洲人成影院| 欧美福利电影在线观看| 91精品视频在线免费观看| 日韩三级影视| 日本成人精品在线| 19禁羞羞电影院在线观看| 久久亚洲欧美国产精品乐播| 一级黄色免费毛片| √天堂资源中文www| 日韩精品中文字幕视频在线| 亚洲欧美日韩另类精品一区二区三区| 成人在线免费看黄| 国产免费黄视频在线观看| 久久99这里只有精品| 日本欧美韩国一区三区| 日韩电影免费观看在线观看| 欧美妇乱xxxxx视频| 九九九视频在线观看| 亚洲成人激情在线观看| 伊人久久久久久久久久久久| 在线亚洲一区| 91久久精品国产91久久性色tv| 超薄肉色丝袜脚交一区二区| 一本在线免费视频| 欧美三级韩国三级日本三斤| 国产黄在线观看| 波多野结衣av在线免费观看| 伊人婷婷久久| 精品三级国产| 国产乱人伦偷精品视频免下载| 久久久久一区二区三区四区| 国产黄网在线观看| 全彩无遮拦全彩口工漫画全彩| 制服丝袜在线91| 欧美激情一区二区三区全黄| 久久精品99国产国产精| 成人亚洲一区二区一| 99国产成+人+综合+亚洲欧美| 成人免费视频一区| 亚洲精品欧美精品| 国产无套内射又大又猛又粗又爽| 久久99精品久久久久婷婷| 久久久久久少妇| 亚洲精品乱码电影在线观看| 德国一级在线视频| 久久久国产一区二区| 国产精品自拍片| 欧美一区三区三区高中清蜜桃| 欧美日韩国产综合在线| 波多野结衣一区二区| 国产精品一区二区三区四区在线观看| 欧美亚洲一区三区| 国内精品在线一区| 精品视频亚洲| 伊人影院中文字幕| 一区二区三区欧美激情| 免费在线观看h片| 无码毛片aaa在线| 亚洲欧美激情视频| 黑巨人与欧美精品一区| 五月天亚洲综合小说网| 国产视频在线免费观看| 一区二区不卡视频| 国产在线日韩精品| 欧美色图亚洲激情| 国产成人免费| 一二三区在线| 999在线视频| 欧美一级在线看| 欧美极品一区二区三区| 国产精品稀缺呦系列在线| 日本一二三区不卡| 91亚洲视频| 日日骚久久av| 91日韩精品一区| 小处雏高清一区二区三区| 欧美特黄级在线| 国产精品久久久久久久久久小说| 精品人妻一区二区三区日产乱码卜| 久久精品欧美一区| 欧美激情99| 污视频网站观看| 久久久久亚洲综合| 国产一区二区三区综合| 天天影视色香欲综合网天天录日日录| 成人美女在线观看| 成人在线app| bdsm精品捆绑chinese女| 一区二区三区在线观看动漫| 91精品国产黑色紧身裤美女| 亚洲爆乳无码专区| 久久五月天小说| 中文字幕日韩av资源站| 国产成人精品综合久久久| 一本高清dvd不卡在线观看| 亚洲一区二区三区无吗| 日本高清视频在线| 日本三级小视频| 亚洲欧洲日韩在线| 国产青草视频在线观看| 欧美成人免费va影院高清| 免费男女羞羞的视频网站主页在线观看| 久久精品午夜一区二区福利| 午夜精品视频| caoporn97免费视频公开| 亚洲中文字幕在线一区| 亚洲综合久久久| 精品一区二区三区国产| 中文字幕人妻熟女在线| jizz久久精品永久免费| 884aa四虎影成人精品一区| 欧美啪啪免费视频| av成人毛片| 91社在线播放| 国产精品自拍小视频| 久久亚洲国产视频| 成年人视频在线看| 国产成a人亚洲精| 日韩精品在线播放| 欧美一区二区三| 国产剧情一区在线| 91久久精品一区| 在线中文字幕第一页| 国产免费高清一区| а√最新版地址在线天堂| www.爱爱.com| 欧美国产日韩一区二区三区| 9i精品福利一区二区三区| 久久精品中文字幕电影| 咪咪网在线视频| 色综合一区二区日本韩国亚洲| 久久久久成人精品无码| 黑吊大战白xxxxxx| 天堂网.www在线资源| 成人在线视频电影| 久久躁日日躁aaaaxxxx| 在线观看特色大片免费视频| 黄网免费入口| 国产美女在线观看| 欧美大码xxxx| 国产在线观看91精品一区| 国产91久久精品一区二区| 欧美成人黑人| 天堂av免费在线| 狠狠热免费视频| 亚洲宅男网av| 欧美三级华人主播| 日韩av一级| 欧美中文日韩| www成人免费视频| 最近中文av字幕在线中文| 国产欧美日韩一区二区三区在线观看| 意大利激情丛林无删减版dvd| 永久免费观看精品视频| 在线成人视屏| 亚洲精品1区2区3区| 中国日本在线视频中文字幕| 欧美专区日韩| 国产一区在线观看视频| 野外做受又硬又粗又大视频√| 蜜桃传媒在线观看免费进入| 成人在线综合网站| 91国偷自产一区二区三区的观看方式| 国产精品国产三级国产专播品爱网| 一区二区三区视频观看| 亚洲一区二区色| 在线最新版中文在线| 在线免费视频你懂得| 91成人天堂久久成人| 亚洲性生活视频在线观看| 日韩精品一区三区| 男人天堂av网站| 超碰在线免费播放| 一区二区三区四区五区精品视频| 婷婷丁香花五月天| 午夜视频福利在线观看| 99国产精品国产精品毛片| 亚洲国产又黄又爽女人高潮的| 26uuu国产精品视频| 女人床在线观看| 国产成人精品一区二三区在线观看| 午夜国产在线视频| www.激情小说.com| 精品国产乱码久久久久久1区2匹| 亚洲欧美一区二区在线观看| 在线观看免费的av| 亚洲成人影院麻豆| 欧美视频一区二区在线| 欧美理伦片在线播放| 欧洲精品乱码久久久久蜜桃| 日本在线中文电影| 精品影片一区二区入口| 羞羞视频网站在线观看| 久久久久久久久影院| 你懂的网址国产 欧美| 久久国产直播| 欧美日韩视频免费在线观看| 日本久久久久久久久久久| 视频一区在线免费看| 久久9精品区-无套内射无码| 欧美日韩一区二区电影| 国产精品久久久久av电视剧| 91丝袜超薄交口足| 45www国产精品网站| 伊人成年综合电影网| 精品卡一卡卡2卡3网站| 日韩精品专区在线| 五月天综合视频| 国产剧情演绎av| 欧美一区免费看| 国产日韩精品中文字无码| 轻轻操 在线观看| 久久国产色av| 日韩一区二区三区中文字幕| 日韩一级在线视频| 精品久久香蕉国产线看观看gif| 先锋影音av在线资源| 久久经典视频| 成人在线视频网址| 亚洲成av人电影| 国产一区二区在线视频| 天天操天天摸天天干| 亚洲免费av片| 中文字幕在线播放第一页| 欧美 变态 另类 人妖| 成视频在线免费观看| 色欲色香天天天综合网www| 日韩精品一区二区三区视频| 国产九九九九| 久久精品中文字幕电影| 超碰在线国产| 亚洲无码久久久久久久| 久久手机在线视频| 成人高清一区| 成人激情四射网| 超碰97在线播放| 中文字幕网址在线| 欧日韩免费视频| 久草在线综合| 午夜综合激情| 顶级欧美妇高清xxxxx| eeuss免费天堂影院| 免费观看成年人视频在线观看| 亚州av综合色区无码一区| 波多野结衣在线aⅴ中文字幕不卡| 久久国产精品色av免费看| 很黄很污的网站| 国产99在线播放| 日本久久一区二区| 日本一区二区在线观看视频| 9人人澡人人爽人人精品| 在线精品视频免费观看| 在线黄色免费网站| 激情综合网最新| 日韩资源在线观看| 国内精品久久久| 亚洲男人天天操| 欧美成人一二三| 日韩久久久久久久久久久| 91精品国产自产在线观看永久| 卡一卡二卡三在线观看| 亚洲一区亚洲二区亚洲三区| 亚洲精品久久久久久下一站| 色视频在线观看在线播放| 五月天婷婷综合社区| 国产日韩免费视频| 在线www天堂网在线| 国产精品色悠悠| 美女久久99| 17videosex性欧美| 日本精品一二三区| 亚洲免费在线看| 欧洲美女免费图片一区| 中文字幕第31页| 国产精品乱码一区二区三区视频| 欧美日韩裸体免费视频| 久久久久久久免费视频了| 蜜桃视频一区| 丰满人妻av一区二区三区| 啊v视频在线| 91精品一区二区三区久久久久久| 久久电影一区| 亚洲精品蜜桃久久久久久| 男插女视频久久久| 91精品国产调教在线观看| 色综合久久88色综合天天| 亚洲精品视频在线观看视频| 一区二区在线观看视频在线| 国精产品一区| 90岁老太婆乱淫| 床上的激情91.| 日本一区美女| 天天操夜夜操国产精品| 2019中文字幕在线电影免费| 欧美精品丝袜中出| 色无极亚洲影院| 成人欧美一区二区三区在线播放| 蜜桃久久久久久久| 亚洲一区二区精品久久av| 亚洲欧美日韩中文播放| 高清免费电影在线观看| 在线看片网址| 国产成人精品日本亚洲专区61| 日韩激情视频在线| 日本在线一区| 久久精品日产第一区二区三区| 一二三区视频在线观看| 日本黄大片在线观看| 久久精子c满五个校花| www黄色在线观看视频| 最近中文字幕免费视频| 国产精品一区不卡| 国内精品国产三级国产99| 亚洲愉拍自拍另类高清精品| 夜鲁夜鲁夜鲁视频在线播放| 在线观看福利一区| 欧美大奶子在线| av黄色在线观看| 色姑娘综合av| 国产99久久精品一区二区 夜夜躁日日躁| 调教视频在线观看| 天天操天天操天天操天天操天天操| 天堂在线一区二区|