android 调用java编写接口 简单示例

一、

1.首先装上tomcat,配置好环境变量(前提已经装好JDK了)

      CATALINA_HOME:D:\apache-tomcat-6.0.14
      CATALINA_BASE:D:\apache-tomcat-6.0.14

      path:%CATALINA_HOME%\bin;%CATALINA_HOME%\lib;

      下载http://labs.mop.com/apache-mirror//axis/axis2/java/core/1.6.1/axis2-1.6.1-war.zip war包放到tomcat的webapps文件夹下
2.下载Eclipse  j2ee版(因需要建web项目发布webservice),然后下载下面两个插件

                  org.apache.axis2.eclipse.service.plugin_1.6.2.jar               

                  org.apache.axis2.eclipse.codegen.plugin_1.6.2.jar

将以上两个jar包放到eclipse下plugins文件夹下,启动eclipse,工程栏里右键new--other会有个axist2文件夹说明已装上

3.写个简单webservice

package com.snto.webserviceTest;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class SayHello {
	
	public String sayHello(String name){
		return "Hello"+name;
	}
	
	public String sayHello1(){
		return "Hello";
		
	}

}

就写一个类,两个方法。

3.然后右键new--other   点击Axis2 wizards文件夹下的 Axis2 service archiver 点击Next  选择编译后class存放的位置(不包含包名),Next选择 Skip WSDL,Next--Next--选择Generate the service选项框,Next 命名service  选择指定的类(包名.类名),load指定发布的方法,Next选择导出arr文件的路径和arr文件的名称。

4.成功导出后将arr文件放到发布的axis2项目下services文件下,启动Tomcat。然后验证是否发布成功,打开浏览器输入http://localhost:8080/axis2点开service看到自己发布的servcie名称,就成功发布webservice了

二、

接下来是android调用了,android环境搭建就不说了

1.新建个android项目

在MainActivity下的代码段,我只贴出调用段的代码,我只放了个按钮点击按钮直接调用webservcie,并将返回内容以提示的内容显示出来

btn_login.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				
				String out="11";
				userNameValue = userName.getText().toString();
				passwordValue = password.getText().toString();
				String serviceUrl="http://172.40.170.118:8888/axis2/services/SayHelloService";
				String nameSpace="http://webserviceTest.snto.com";
				String methodName="sayHello";
				HttpTransportSE transport=new  HttpTransportSE(serviceUrl);
				SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
				SoapObject rpc = new SoapObject(nameSpace, methodName); 
				rpc.addProperty("arg0", "aaaa");//根据网上说的好像参数要这样arg0,arg1...
				envelope.bodyOut = rpc;
//				envelope.dotNet = true; 
//				envelope.setOutputSoapObject(rpc); 
//				envelope.encodingStyle="UTF-8";
//				(new MarshalBase64()).register(envelope);
				 
				 transport.debug=true;
				 try {
				 	transport.call(nameSpace+"/"+methodName, envelope);
				  	// 获取返回的数据
				  	SoapObject object = (SoapObject) envelope.bodyIn;
				  	// 获取返回的结果
				  	out = object.getProperty(0).toString();
				  	Log.v("out",out);
					
//					if(envelope.getResponse()!=null){
//						out=envelope.getResponse().toString();
//						SoapObject bb=(SoapObject) envelope.bodyIn;
//						if(bb!=null){
//							out=String.valueOf(bb.getProperty(0));
//							password.setText(out);
//						}
//					 }  
					System.out.println(out);
				} catch (IOException e) {
					e.printStackTrace();
				} catch (XmlPullParserException e) {
					e.printStackTrace();
				}
				if (out!=null&&!"".equals(out)) {
					Toast.makeText(LoginActivity.this, "登录成功"+out,  //为了打印出来,看传回信息没
							Toast.LENGTH_SHORT).show();
					Log.v("pwd", password.toString());
					// 登录成功和记住密码框为选中状态才保存用户信息
					if (rem_pw.isChecked()) {
						// 记住用户名、密码、
						Editor editor = sp.edit();
						editor.putString("USER_NAME", userNameValue);
						editor.putString("PASSWORD", passwordValue);
						editor.commit();
					}
					// 跳转界面
					Intent intent = new Intent(LoginActivity.this,
							LogoActivity.class);
					LoginActivity.this.startActivity(intent);
					// finish();

				} else {
					Toast.makeText(LoginActivity.this, "用户名或密码错误,请重新登录",
							Toast.LENGTH_LONG).show();
				}

			}

			
		});


 

 

 

 


 

你可能感兴趣的:(android)