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

首頁 > 學院 > 開發設計 > 正文

J2ME與WebService-KSOAP的羅曼史

2019-11-18 16:21:02
字體:
來源:轉載
供稿:網友
J2ME與Web Service-KSOAP的羅曼史

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

作者:Cleverpig


版權聲明:可以任意轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明
原文地址:
http://www.matrix.org.cn/resource/article/43/43662_J2ME_KSOAP.Html
關鍵詞: j2me soap webservice

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置于: /jagiews/WEB-INF/classes/com/jagie/j2me/ws目錄下。

3.在jagiews/WEB-INF/lib 文件夾中置入以下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.在jagiews/WEB-INF目錄下增加2個發布描述文件:
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發布為一個名叫jagiews的web application。

6.測試:打開瀏覽器,輸入網址(這里使用的是weblogic,其他的服務器請酌情修改): http://localhost:7001/jagiews/services/StringProcess?method=process&name=QQqq,如果瀏覽器能在返回的xml文檔中顯示字符串"QQQQ",恭喜你,你的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.*;

/**
* <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("字符轉換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;

  }
}


總結

有了ksoap,手機上調用web service就很容易了。不過要注意的是,使用網絡連接這種費時操作的時候,一定要單獨開線程進行,不要直接寫在commandAction()方法里,否則出現畫面被鎖住的情況。進入討論組討論。

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



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲人成电影在线观看天堂色| 亚洲男人的天堂网站| 全球成人中文在线| 深夜福利91大全| 色播久久人人爽人人爽人人片视av| 亚洲精品久久久久久久久久久| 亚洲最大的网站| 午夜美女久久久久爽久久| 97精品国产91久久久久久| 亚洲理论在线a中文字幕| 黑人巨大精品欧美一区二区免费| 国产精品麻豆va在线播放| 精品视频中文字幕| 麻豆国产精品va在线观看不卡| 蜜臀久久99精品久久久久久宅男| 57pao成人永久免费视频| 亚洲欧美激情另类校园| 亚洲一区二区三区sesese| 国产精品一二三在线| 日韩美女视频在线观看| 日韩www在线| 国产91ⅴ在线精品免费观看| 日韩精品一区二区视频| 久久天天躁狠狠躁夜夜av| 中文字幕亚洲情99在线| 欧美性生交xxxxxdddd| 亚洲精品99久久久久中文字幕| 亚洲成色999久久网站| 久久99热精品| 久久影视电视剧免费网站| 国产精品普通话| 日韩午夜在线视频| 国产精品狼人色视频一区| 亚洲第一网站男人都懂| 亚洲激情中文字幕| 亚洲精品欧美日韩| 亚洲国产精品va在线看黑人| 国产在线日韩在线| 欧美高清在线播放| 欧美日韩国产成人在线| 另类天堂视频在线观看| 日韩精品中文字幕在线播放| 91精品在线观看视频| 欧美日韩中文字幕| 国产精品成人免费电影| 91久久久久久久一区二区| 成人两性免费视频| 国产男女猛烈无遮挡91| 欧美日韩免费看| 亚洲国产欧美自拍| 欧美一级bbbbb性bbbb喷潮片| 国产精品一区二区久久久| 国内精品久久久久久久| 亚洲欧美日韩中文在线| 国内精品久久久久久| 久久免费少妇高潮久久精品99| 久久精品视频网站| 亚洲美女免费精品视频在线观看| 91在线国产电影| xvideos亚洲| 成人春色激情网| 91沈先生作品| 欧美激情影音先锋| 91国产中文字幕| 亚洲欧美国产日韩中文字幕| 欧美激情视频一区二区| 综合国产在线观看| 中文字幕欧美日韩va免费视频| 亚洲第一福利网站| 亚洲成年人在线| 国产国语videosex另类| 欧美乱大交xxxxx另类电影| 欧美激情欧美激情在线五月| 日韩成人av网| 在线观看不卡av| 国产精品精品国产| 91高清免费视频| 欧美激情精品久久久久久大尺度| 亚洲成人a**站| 亚洲视频在线免费观看| 国产大片精品免费永久看nba| 欧美日韩高清区| 国产日韩欧美在线| 日韩成人中文字幕在线观看| 日韩欧美成人免费视频| 国产91精品最新在线播放| 狠狠综合久久av一区二区小说| 亚洲女同精品视频| 国产精品电影久久久久电影网| 97视频色精品| 国产成人精品在线视频| 亚洲精品美女久久久久| 中文字幕欧美专区| 日韩av资源在线播放| 久久久久久久久国产精品| 国产精品精品视频| 国产精品久久久久久久美男| 51午夜精品视频| 久久这里只有精品99| 精品一区二区三区电影| 成人免费激情视频| 国产精品久久久久久久久久尿| 美女福利视频一区| 日韩精品在线观看一区| 91视频88av| 日韩国产高清视频在线| 欧美精品在线免费播放| 亚州欧美日韩中文视频| 日韩精品有码在线观看| 国产综合色香蕉精品| 韩国视频理论视频久久| 91精品视频在线看| 国产精品久久久久久久久久久新郎| 深夜精品寂寞黄网站在线观看| 国产噜噜噜噜噜久久久久久久久| 久久久中精品2020中文| 国产精品夫妻激情| 久久这里只有精品99| 91在线观看免费高清完整版在线观看| 日韩av在线一区二区| 欧美日韩国产一中文字不卡| 欧美激情国内偷拍| 久久av中文字幕| 亚洲天堂精品在线| 91在线视频精品| 美女扒开尿口让男人操亚洲视频网站| 日本欧美中文字幕| 亚洲品质视频自拍网| 国产成人精品久久| 最好看的2019年中文视频| 亚洲精品一二区| 538国产精品一区二区免费视频| 最近2019中文字幕第三页视频| 欧美激情一区二区三区高清视频| 日韩欧美在线视频日韩欧美在线视频| 国产免费一区二区三区香蕉精| 亚洲美女中文字幕| 久久久亚洲精选| 在线电影中文日韩| 欧洲亚洲免费视频| 欧美日韩国产精品一区二区三区四区| 亚洲成人av片在线观看| 亚洲激情国产精品| 欧美又大又硬又粗bbbbb| 国产精品视频久久久| 国产视频久久久久| 久久精品影视伊人网| 日韩黄色在线免费观看| 国产日韩中文字幕在线| 精品久久久香蕉免费精品视频| 亚洲欧美精品在线| 亚洲视频在线观看免费| …久久精品99久久香蕉国产| 成人激情综合网| 日韩av网址在线| 国产一区视频在线播放| 国产中文欧美精品| 国产欧美精品va在线观看| 欧美成人性生活| 日韩美女毛茸茸| 亚洲综合av影视| 国产精彩精品视频| 国产欧美日韩最新| 亚洲第一av网|