一:开发环境搭建
这里假设Android的基础开发环境已经搭建好了,现在要进行搭建的是Axis2和Tomcat服务器;
1:搭建Tomcat服务器
找到"windows"下的"preferences"然后按下列图片顺序操作
点击"add"
注意:上面的复选框一定要勾选
现在tomcat服务器配置好了,在Eclipse-Android的IDE开发工具中你会发现多了一个叫做"servers"的项目,然后在server导航栏下也有了一个新的服务器
2:配置Axis2
假设你已经下载好了Axis2的压缩包,将其任意压缩至某一个文件目录下,比如:D:\Programings\axis2-1.6.1,然后在计算机中配置环境变量AXIS2_HOME
现在我们要做的就是怎样让创建的Web程序和Axis2关联起来,下面用一个演示程序来说明
"New" 一个web project
在这里你要选定之前设定的Tomcat服务器名称,并选择运用哪一种WebService服务器,点击"Modify"
勾选上图中的Axis2 Web Services ,点击“Save as” 在这个对话框中,编辑自己可以设定的名字来标识,如:Axis2_Services
现在在项目CloudService下你将看到多了一个"asis2_web"的文件夹,并且在JRE System Library中将有很多axis2应用的jar包;
如此开发环境已经搭建好了,现在就通过一个简单的加法程序来说明怎么使用吧
二:项目案例:移动互联加法案例
在CloudService项目src文件夹下新建一个java类Calculate
package com.chinasoft.service; public class Calculate { public int add(final int num1,final int num2){ return num1+num2; } }
这样,这个逻辑类就写好了,那怎么样才能让Android端才能调用这个程序呢,不要急,先将该类发布到WebService上,右击该类名,选择"Web Services "--->"create web service",将会跳转到Web Service 的验证界面
检验之后,如果没有错,就执行“next”,这里也可以开启服务器Tomcat;
然后转到"Java EE"
点击打开最后一个图标
同上一步
再点击"WSDL Main"
输入Web Service 描述语言的地址,格式如下
点击"Go",现在就可以在这里进行测试了;如
上面右边必须点击第一个,因为Apache 的Axis2包只支持SOAP(简单对象访问协议)
2:开发Android端调用程序,使得程序在Android端就能返回结果,而把执行加法的运算交给服务器端执行
界面的XML布局文件就不写了,只有一个Button,下面就给出Android调用Web Service的方法步奏
public class MainActivity extends Activity { private Button btnCalculate , btnAddUser; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.btnCalculate = (Button) findViewById(R.id.btnCalculate); this.btnCalculate.setOnClickListener(new ViewOcl()); } class ViewOcl implements View.OnClickListener{ String wsdlURL; String webMethod; String namespace; String soapAction; SoapObject soapObject; SoapSerializationEnvelope envelope; HttpTransportSE se; @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnCalculate: int num1 = 12; int num2 = 6; // 步骤1:设置WebService的调用参数 namespace是包名的反转 wsdlURL = "http://172.31.147.20:8080/CloudService/services/Calculate"; webMethod = "add"; namespace = "http://service.chinasoft.com"; soapAction = namespace + webMethod; // 步骤2:创建一个对象SoapObject 信封中的信内容 soapObject = new SoapObject(namespace, webMethod); // 步骤3:传递参数 soapObject.addProperty("num1",num1); soapObject.addProperty("num2",num2); // 步骤4:创建一个SoapSerializationEnvelope,信封:设定信封传递方式 envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); // 步骤5:设置一下传回对象 将信装载到信封 envelope.bodyOut = soapObject; // 步骤6:创建HttpTransportSE,用于传输数据,邮递员:将邮递地址给予邮递员 se = new HttpTransportSE(wsdlURL); try { // 步骤7:发送请求 送信 se.call(soapAction, envelope); // 步骤8:获取从互联网返回的结果,测试信有没有送到 if(envelope.getResponse() != null){ Object result = envelope.getResponse(); // 测试:显示结果 Toast.makeText(MainActivity.this, "结果为:"+result.toString(), Toast.LENGTH_LONG).show(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; } } } }
这样还不够,我们还需要将ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar添加到Android项目中,这是Android端调用Web Service 必不可少的Jar包
最后在AndroidManifest.xml中添加:
<uses-permission android:name="android.permission.INTERNET"/>
使得Android具有网络通信的功能。