《转》Android在网络中与JavaWeb的项目进行交互的方法

内容不全,请查看原博客,以下为转载内容及原博客出处:

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://nankaigz.blog.51cto.com/2504749/639065

Google 暑期大学生博客分享大赛 - 2011 Android 成长篇

    最近在研究一些Android和JavaWeb项目的交互问题,总结一点东西在这篇文章里。首先说来,如果想要实现Android在网络上与JavaWeb的交互,就要把JavaWeb的项目的方法暴露在网络中,然后供Android的这一端调用,实现交互,其中,主要用到了两个知识点,WebService和SOAP的使用。

    这里我写了一个很简单的小例子来实现交互。

    首先,在开发工具中,创建了一个Web Project,一定要对项目添加JAX-WS类库。在代码部分我就只写了一个很简单的计算两个数的和的函数:

  
  
  1. package com.demo.pack; 
  2.  
  3. import javax.jws.WebMethod; 
  4. import javax.jws.WebService; 
  5.  
  6. @WebService 
  7. public class Calculate { 
  8.  
  9.     @WebMethod 
  10.     public int add(final int num1, final int num2){ 
  11.         return num1 + num2; 
  12.     } 

然后,点击下图中的New Web Service,将刚刚写的这个函数放到网络服务上

650) this.width=650;” border=”0” alt=”” src=”http://img1.51cto.com/attachment/201108/220022889.png” οnabοrt=”” οnblur=”” οnchange=”” οnclick=”” οndblclick=”” οnerrοr=”” οnfοcus=”” οnkeydοwn=”” οnkeypress=”” οnkeyup=”” οnmοusedοwn=”” οnmοusemοve=”” οnmοuseοut=”” οnmοuseοver=”” οnmοuseup=”” οnreset=”” οnresize=”” οnselect=”” οnsubmit=”” οnunlοad=”“>

650) this.width=650;” border=”0” alt=”” src=”http://img1.51cto.com/attachment/201108/220522872.png” οnabοrt=”” οnblur=”” οnchange=”” οnclick=”” οndblclick=”” οnerrοr=”” οnfοcus=”” οnkeydοwn=”” οnkeypress=”” οnkeyup=”” οnmοusedοwn=”” οnmοusemοve=”” οnmοuseοut=”” οnmοuseοver=”” οnmοuseup=”” οnreset=”” οnresize=”” οnselect=”” οnsubmit=”” οnunlοad=”“>

 

650) this.width=650;” border=”0” alt=”” src=”http://img1.51cto.com/attachment/201108/220558956.png” οnabοrt=”” οnblur=”” οnchange=”” οnclick=”” οndblclick=”” οnerrοr=”” οnfοcus=”” οnkeydοwn=”” οnkeypress=”” οnkeyup=”” οnmοusedοwn=”” οnmοusemοve=”” οnmοuseοut=”” οnmοuseοver=”” οnmοuseup=”” οnreset=”” οnresize=”” οnselect=”” οnsubmit=”” οnunlοad=”“>

点击Finish就创建完成了,这个项目的Calculate方法已经被暴露在了网络上,也就是说,可以供Android调用了。

接下来,我再另外创建了一个Android的项目。在这个Android项目中除了Android的自己的库之外,一定还要引入以下的ksoap2-android-assembly-2.4-jar-with-dependencies.jar

650) this.width=650;” border=”0” alt=”” src=”http://img1.51cto.com/attachment/201108/221746432.png” οnabοrt=”” οnblur=”” οnchange=”” οnclick=”” οndblclick=”” οnerrοr=”” οnfοcus=”” οnkeydοwn=”” οnkeypress=”” οnkeyup=”” οnmοusedοwn=”” οnmοusemοve=”” οnmοuseοut=”” οnmοuseοver=”” οnmοuseup=”” οnreset=”” οnresize=”” οnselect=”” οnsubmit=”” οnunlοad=”“>

这个jar文件可以使Android的项目访问到Web Service,所以必不可少,一定要加入进来。

在Android的这个项目的布局中,我只是添加了两个EditText来得到用户输入的值,和一个Button去调用WebService上已经托管在网络上的Calculate函数来计算结果。

在Button的监听器类当中,编写了和JavaWeb项目交互的代码,主要的部分具体如下:

  
  
  1. //WebService中的wsdl文件的网络地址 
  2.                 String wsdl = "http://192.168.1.102:8080/ch10_app01_WebService/CalculatePort?wsdl"
  3.                 //WebService中的命名空间 
  4.                 String namespace = "http://pack.demo.com/"
  5.                 //调用方法的名称 
  6.                 String webmethod = "add"
  7.                 //创建soapObject对象 
  8.                 SoapObject soapObject = new SoapObject(namespace, webmethod); 
  9.                 //设置参数 
  10.                 soapObject.addProperty("arg0", num1); 
  11.                 soapObject.addProperty("arg1", num2); 
  12.                 //创建SoapSerializationEnvelope对象,并设置WebService版本号 
  13.                 SoapSerializationEnvelope serializationEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
  14.                 //设置serializationEnvelope对象的badyOut属性 
  15.                 serializationEnvelope.bodyOut = soapObject; 
  16.                 //创建HttpTransportSE对象,并且确定wsdl网络地址 
  17.                 HttpTransportSE httpTransportSE = new HttpTransportSE(wsdl);                 
  18.                 try { 
  19.                     //httpTransportSE调用Call方法 
  20.                     httpTransportSE.call(null, serializationEnvelope); 
  21.                     //获取返回的结果对象 
  22.                     if(serializationEnvelope.getResponse() != null){ 
  23.                         Object obj = serializationEnvelope.getResponse(); 
  24.                         //显示获取到的结果对象 
  25.                         Toast.makeText(getApplicationContext(), "结果为:"+obj.toString(), Toast.LENGTH_LONG).show(); 
  26.                     } 
  27.                 } catch (IOException e) { 
  28.                     // TODO Auto-generated catch block 
  29.                     e.printStackTrace(); 
  30.                 } catch (XmlPullParserException e) { 
  31.                     // TODO Auto-generated catch block 
  32.                     e.printStackTrace(); 
  33.                 } 

在这段代码中,有必要说明一下的是,在写WebService中的wsdl文件的网络地址时,一定要写ipv4的静态地址,不能写什么localhost。另外,命名空间什么的可以再JavaWeb项目中的CalculateDelegate.java中找到。运行如下:

650) this.width=650;” border=”0” alt=”” src=”http://img1.51cto.com/attachment/201108/230456431.png” οnabοrt=”” οnblur=”” οnchange=”” οnclick=”” οndblclick=”” οnerrοr=”” οnfοcus=”” οnkeydοwn=”” οnkeypress=”” οnkeyup=”” οnmοusedοwn=”” οnmοusemοve=”” οnmοuseοut=”” οnmοuseοver=”” οnmοuseup=”” οnreset=”” οnresize=”” οnselect=”” οnsubmit=”” οnunlοad=”” width=”650”>

这样,Android项目就成功的和JavaWeb项目实现了交互!

本文出自 “nankaigz” 博客,请务必保留此出处http://nankaigz.blog.51cto.com/2504749/639065

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值