狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細頁面

J2ME與Web Service-KSOAP的迅速上手

J2ME與Web Service-KSOAP的迅速上手

更新時間:2019-04-30 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

1、服務(wù)端

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

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

1.1 實現(xiàn)類的源代碼:


// 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)備一個目錄作為web application的發(fā)布目錄,我這里的這個目錄叫jagiews,這個目錄的全路徑中最好不要有空格和中文。我的發(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個發(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.開啟你的application server,把目錄jagiews發(fā)布為一個名叫jagiews的web application。

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

2、客戶端

客戶端自然是用MIDlet了,不過用什么方式來訪問web service呢?其實有3種訪問方式

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

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

用ksoap api。

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

2.1 客戶端源代碼

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測試");

    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,手機上調(diào)用web service就很容易了。不過要注意的是,使用網(wǎng)絡(luò)連接這種費時操作的時候,一定要單獨開線程進行,不要直接寫在commandAction()方法里,否則出現(xiàn)畫面被鎖住的情況。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
亚洲欧洲性图库| 免费在线看成人av| 免费看黄裸体一级大秀欧美| 欧美日韩爆操| 日本国产一区二区| 久久综合九色综合欧美就去吻| 亚洲免费观看在线视频| 看片的网站亚洲| 亚洲性图久久| 欧美一级片在线| 一区二区三区在线影院| 国产成人av一区二区| 羞羞答答国产精品www一本| 26uuu久久天堂性欧美| 丝袜美腿亚洲综合| 国产精品igao视频网网址不卡日韩| 色综合久久88色综合天天6| 国产午夜亚洲精品不卡| 强制捆绑调教一区二区| 国产一区美女| 精品捆绑美女sm三区| 五月天激情综合| 好吊日精品视频| 91精品国产高清一区二区三区蜜臀| 亚洲制服丝袜在线| 99精品欧美一区二区蜜桃免费| 91国内精品野花午夜精品| 中文字幕一区二| 成人免费视频国产在线观看| 日本国产一区二区| 樱桃国产成人精品视频| 色综合天天综合色综合av| 精品视频一区二区三区免费| 亚洲黄色片在线观看| 午夜久久一区| 精品国产欧美一区二区| 久久国产精品无码网站| 亚洲欧美日韩国产综合精品二区| 中文字幕va一区二区三区| 国产成人av电影免费在线观看| 在线视频你懂得一区| 亚洲黄色录像片| 在线观看视频免费一区二区三区| 欧美电影免费观看高清完整版在线观看 | 天堂成人国产精品一区| 黄色综合网站| 国产成人综合自拍| 欧美最猛性xxxxx直播| 一区二区三区免费在线观看| 午夜日韩视频| 久久久久久久免费视频了| 成人午夜在线视频| 欧美日本免费一区二区三区| 奇米777欧美一区二区| 免费亚洲视频| 亚洲第一综合色| 亚洲欧美精品在线观看| 夜夜揉揉日日人人青青一国产精品| 欧美日韩在线精品一区二区三区| 五月综合激情婷婷六月色窝| 亚洲精品国产系列| 国产精品美女www爽爽爽| 欧美激情偷拍| 亚洲欧洲精品天堂一级| 在线观看成人av电影| 亚洲免费av在线| 狠狠综合久久| 欧美日韩一区二区三区免费看| 国产三级精品三级| 91社区在线播放| 欧美高清一级片在线观看| 国内成+人亚洲| 亚洲同性gay激情无套| 一区二区精品| 天堂成人国产精品一区| 日本福利一区二区| 国内成+人亚洲+欧美+综合在线| 欧美日本高清视频在线观看| 国产精品亚洲成人| 久久夜色精品国产欧美乱极品| 色综合色狠狠综合色| 国产精品国产三级国产有无不卡| 亚洲国产高清一区二区三区| 亚洲靠逼com| 久久一二三四| 国产91精品免费| 欧美国产亚洲另类动漫| 亚洲美女色禁图| 蜜臀av性久久久久蜜臀aⅴ四虎| 7777女厕盗摄久久久| 国产精品v欧美精品v日韩精品| 亚洲嫩草精品久久| 色视频欧美一区二区三区| 国产乱码精品一区二区三区av | 国产宾馆实践打屁股91| 2021久久国产精品不只是精品 | 亚洲成人自拍一区| 欧美日韩激情一区| 欧美一区二区在线| 亚洲自拍偷拍欧美| 51久久夜色精品国产麻豆| 欧美一区二区视频在线| 亚洲午夜一区二区三区| 欧美一区二区三区免费大片| 女主播福利一区| 日韩影院在线观看| 精品美女在线播放| 国产乱码精品一区二区三区不卡| 久久av最新网址| 日韩av二区在线播放| 日本伊人精品一区二区三区观看方式| 久久er精品视频| 粉嫩aⅴ一区二区三区四区五区| 亚洲国产精品久久久久秋霞影院| 2023国产精品自拍| 91精品国产欧美日韩| 日本一区免费视频| 91精品国产综合久久久久| 色一情一伦一子一伦一区| 夜夜精品视频| 极品尤物久久久av免费看| caoporen国产精品视频| 国产精品一二三在| 极品少妇一区二区三区精品视频| 亚州成人在线电影| 亚洲高清免费观看| 一区二区三区资源| 亚洲天堂2014| 最新热久久免费视频| 中文一区二区在线观看| 国产午夜精品福利| 国产亚洲欧美日韩俺去了| 精品精品欲导航| 91精品中文字幕一区二区三区| 欧美专区亚洲专区| 亚洲一区二区网站| 不卡的av网站| 午夜精品免费在线| 亚洲制服丝袜av| 亚洲第一主播视频| 香蕉成人啪国产精品视频综合网| 亚洲一区欧美一区| 亚洲成人资源在线| 日韩精品久久理论片| 免费高清不卡av| 久久精品国产精品亚洲综合| 久久99精品一区二区三区三区| 美女mm1313爽爽久久久蜜臀| 久久国产成人午夜av影院| 国内精品国产三级国产a久久| 精品午夜久久福利影院| 久草精品在线观看| 国产成人亚洲综合a∨猫咪| 成人免费视频一区| 色综合天天性综合| 今天的高清视频免费播放成人| 亚洲精品乱码视频| 色偷偷久久人人79超碰人人澡| 欧美三级在线播放| 日韩三级视频在线看| 国产婷婷色一区二区三区| 国产精品成人免费精品自在线观看 | 成人久久18免费网站麻豆| 欧美大片一区| 一本久道久久综合婷婷鲸鱼| 久久中文在线| 日韩一区二区三区免费观看| 久久久久久免费毛片精品| 国产精品久久看| 午夜久久电影网| 国产高清一区日本| 欧美激情日韩| 久久不射2019中文字幕| 欧美肥胖老妇做爰| 国产欧美1区2区3区| 亚洲动漫第一页| 国产一区在线观看视频| 91视频在线看| 老鸭窝毛片一区二区三区| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲午夜在线观看视频在线| 久久99精品久久久久久国产越南| 成人激情校园春色| 99亚洲一区二区| 欧美精品久久一区二区三区| 国产亚洲短视频| 五月婷婷欧美视频| 丁香天五香天堂综合| 亚洲精品久久| 911精品产国品一二三产区| 国产精品久久网站| 久久av资源网| 狠狠综合久久| 欧美美女视频在线观看| 亚洲色欲色欲www在线观看| 国产一区二区不卡老阿姨| 亚洲区一区二| 精品国产伦一区二区三区免费| 亚洲va天堂va国产va久| 91亚洲永久精品|