论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> JAVA认证 >> IT正文
教您在J2ME中访问dotnet Web Services
 作者:佚名     2007-3-14 17:11:12        来源:不详  浏览次数:

 

 

 

 

 

 

 

 

经过大量的试验证明,目前最方便、快速的方式就是通过JSR172规范来实现对Web Services的访问,可以访问其它任何工具创建的Web Services。

目前,有两种方式访问Web服务:

1、通过JSR172 API。

2、通过KSOAP API。

由于使用KSOAP方式访问Web服务的例子很多,尤其是访问使用Java开发的Web服务,但是使用KSOAP方式访问用.NET 开发的Web服务,目前的例子很少,而且我花了几天时间没有调通一个,原因未明,故只讨论使用JSR172的方式。KSOAP的方式这里暂不讨论。

注:要获知KSOAP的详细资料请上:http://ksoap.objectweb.org/

要获知JSR172的资料请上:http://java.sun.com/products/wsa/

本示例开发环境:J2ME Wireless Toolkit 2.2,JB9,dotnet2003

需要的jar包:kxml-min.zip ,ksoap-midp.zip

步骤1:使用.NET 开发的Web 服务为:(确保调试通过)

[WebMethod(Description="Login"]
  //[System.Web.Services.
  Protocols.SoapRpcMethod]
  public bool Login(string 
  sLoginUserID,string sLoginPwd)
  {
   string spwd="";
   gUserID = "";
   if((sLoginUserID == null)
   || (sLoginUserID.Trim() == ""))
   {
    return false;
   }
   try
   {
    myConnection = new SqlConnection(conStr);
    string strSql = "SELECT 
	* FROM tUser WHERE userid=@UserID";

    SqlCommand myCommand = 
	new SqlCommand(strSql, myConnection);
    SqlParameter paramUserID =
	new SqlParameter("@UserID", SqlDbType.NVarChar, 12);
    paramUserID.Value = sLoginUserID;
    myCommand.Parameters.Add(paramUserID);

    myConnection.Open();
    dataReader = myCommand.ExecuteReader
	(CommandBehavior.CloseConnection);
    while(dataReader!=null && dataReader.Read())
    {
     spwd = dataReader.GetString(2);
    }
    if( !spwd.Equals(sLoginPwd))
    {
     return false;
    }
    else
    {
          return true;
    }
   }
   catch (Exception ex)
   {
       Error.Log(ex.Message.ToString());
    return false;
   }
   finally
   {
    if(myConnection!=null)
     myConnection.Close();
    if(dataReader!=null)
     dataReader.Close();  
   }
  }

步骤2:在J2ME中引入Web服务。

在开始菜单中找到J2ME wireless Toolkit2.2中的Utilities一项,点击Stub Generator按钮,在弹出的界面上输入WSDL,例如:http://192.168.10.101/Service/MyServices.asmx?wsdl,注意一定要加wsdl.在outpath中填入你想将生成的访问Web服务的代码存放的目录;Output Package中填入你的工程src的目录,例如helloworld.WS是指src目录下的子目录helloworld下的目录WS--如果编译不通过,可以手工改。设定CLDC的版本1.0/1.1,建议用1.1的,支持浮点运算。

点击OK按钮,就可以产生访问Web服务的代码了。将代码copy或者本身就产生在自己的工程目录中,刷新JB9的开发环境,新产生的代码即可出现。保证编译通过。

步骤3:使用Web服务。

修改你的MIDLet:

例如:

/** Service connector jax-rpc 
 stub for connecting to server. */
  private SalesServiceSoap_Stub service;
  //这里写你自己的服务,
  产生的java文件中有一个XXSoap_Stub.java文件,
  其中XX就是你的Web服务名。
  ......
  /** Initialize midlet data, service, parsers */
  public void startApp()
  {
    service = new SalesServiceSoap_Stub();
//new一个实例
 service._setProperty
 (SalesServiceSoap_Stub.SESSION_MAINTAIN_PROPERTY,
new Boolean(true));
  ......

注意下面这段代码就使用Web服务的Login方法了。

public void commandAction(Command c, Item item)
{
    if (c == CMD_LOGIN)
	{
      sLoginUserID = txtUserID.getString();
      sLoginPwd = txtUserPwd.getString();
      if (sLoginUserID.length() == 0)
	  {
        error("Input userid please!");
        return;
      }
      if (sLoginPwd.length() == 0)
	  {
        error("Input password please!");
        return;
      }
      //Call .NET XML WebServices
      Thread t = new Thread() 
	  { 
	  //一定要新开线程,避免锁定屏幕
        public void run()
		{
          try
		  {
            boolean loginResult = 
			service.login(sLoginUserID, sLoginPwd);
			//Method:Login()
            if (loginResult == false)
			{
              error("You have no permission login.");
            }
            else
			{
              display.setCurrent(MainForm);
            }
          }
          catch (Exception e)
		  {
            if (!EXIT_STRING.equals(e.getMessage()))
			{
              e.printStackTrace();
              error("Connection problems.\n"
                    + "Check your internet/proxy settings.");
            }
          }
        }
      };
      t.start();
    }

到此,你就已经完成了J2ME call the dotnet Web Services!让您有非同一般的感觉吧!

(T117)


责任编辑:lss
  相关新闻
Java基础-漫谈EJB在Java中的应用
漫谈EJB在Java中的应用(二)
J2EE技术-漫谈EJB在Java中的应用
把您从麻烦中解脱的JNDI在J2EE中的角色
专家教您如何避免重启你的应用程序
第三方类库:在Java中读写Excel文件
在Java中应用设计模式-Factory Method
怎样在Java应用程序中监视CPU的使用状况
教您怎样在Web应用中动态创建PDF文件
使用JWSDP完成Web Service在java的入门
Java基础-漫谈EJB在Java中的应用
漫谈EJB在Java中的应用(二)
教您如何用Struts向数据库中储存图片
在Java中监控文本框的变化
第三方类库:在Java中读写Excel文件
在JSE环境中使用Hibernate EntityManger
在JSE环境中使用Hibernate EntityManger
使用JWSDP完成Web Service在java的入门
教您怎样部署基于WebSphere的J2EE应用
教您怎样在Web应用中动态创建PDF文件
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号