Android(安卓)+ Axis2
16lz
2021-01-26
首先到Apache Axis2官网下载相应的War包,部署到Tomcat webApps文件夹下
下载地址:http://axis.apache.org/axis2
建立一个pojo,放到已经部署到tomcat的axis文件夹的WEB-INF的pojo文件夹下,如果没有自己建一个:
这个是pojo的java代码
下面是Android部分
下载最新的ksoap2-android-assembly-3.0.0-RC.2-jar-with-dependencies.jar包,
下载地址:http://code.google.com/p/ksoap2-android/wiki/HowToUse?tm=2
在Android Application Project 中建立一个文件夹,把Jar包放进去,并引入此Jar包
注意:一定要把这个Jar包所在的文件夹Build Path里设置为Use As Source Folder
接下来是Android Activity代码:
我发现调用WebService不能用本线程,另外,调用本机的WebService,不能用127.0.0.1和localhost,切记
下载地址:http://axis.apache.org/axis2
建立一个pojo,放到已经部署到tomcat的axis文件夹的WEB-INF的pojo文件夹下,如果没有自己建一个:
这个是pojo的java代码
import java.util.Random;public class Test2 {public String sayHello(String name) {return name + " say: hello [axis2]";}public int getAge(int i) {return i + new Random().nextInt(100);}}
下面是Android部分
下载最新的ksoap2-android-assembly-3.0.0-RC.2-jar-with-dependencies.jar包,
下载地址:http://code.google.com/p/ksoap2-android/wiki/HowToUse?tm=2
在Android Application Project 中建立一个文件夹,把Jar包放进去,并引入此Jar包
注意:一定要把这个Jar包所在的文件夹Build Path里设置为Use As Source Folder
接下来是Android Activity代码:
package com.example.testandroidwebservice;import java.io.IOException;import org.ksoap2.SoapEnvelope;import org.ksoap2.SoapFault;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializationEnvelope;import org.ksoap2.transport.HttpTransportSE;import org.xmlpull.v1.XmlPullParserException;import android.os.Bundle;import android.app.Activity;import android.util.Log;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class LoginActivity extends Activity {private static final String NAME_SPACE = "http://ws.apache.org/axis2";private static final String WDSL_LINK = "http://192.168.1.102:8089/axis2/services/Test2?wsdl";private static final String METHOD_NAME = "sayHello";private Button call_soap;private EditText name_input;private TextView textView;private String resultStr; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); this.initUI(); this.call_soap.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {callWebService();}}); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_login, menu); return true; } private void initUI() { call_soap = (Button) this.findViewById(R.id.soap_button); name_input = (EditText) this.findViewById(R.id.name_input); textView = (TextView) this.findViewById(R.id.textView); } private void callWebService() { Thread thr = new Thread() {public void run() {try {String name = name_input.getText().toString();//Soap Object 是 SoapSerializationEnvelope的重要组成部分SoapObject request = new SoapObject(NAME_SPACE, METHOD_NAME);request.addProperty("name", name);SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);envelope.bodyOut = request;envelope.dotNet = true;envelope.setOutputSoapObject(request);HttpTransportSE ht = new HttpTransportSE(WDSL_LINK);ht.call("", envelope);String ret = String.valueOf(envelope.getResponse());Log.d("resultStr = ", ret);setResultStr(ret);} catch (SoapFault e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (XmlPullParserException e) {e.printStackTrace();}}};thr.start();textView.setText(resultStr); }public String getResultStr() {return resultStr;}public void setResultStr(String resultStr) {this.resultStr = resultStr;} }
我发现调用WebService不能用本线程,另外,调用本机的WebService,不能用127.0.0.1和localhost,切记
更多相关文章
- Android(安卓)8.1.0 SystemUI 修改之 - 系统锁屏状态下点击用户
- [ZZ][Android]使用bindService启动服务
- OpenCV Android(安卓)通过 jni调用 使用opencv (Android(安卓)St
- Android(安卓)N调用系统安装APK方法报错原因整理及解决方案
- 【转】android progressbar 自定义样式
- Linux/Android(安卓)NDK wchar_t 陷阱
- AndroidStudio Frameworks detected: Android(安卓)framework is
- Android4.2和4.3中enable bluetooth
- android Error: unterminated entity ref 问题