微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于axis2的webservice和android简单的本地数据交互下

三、生成客户端(PC端)
    1. WSDL2Java成stub代码
       1.1. 在eclipse中建一个普通的java项目工程 webServiceClientDemo
       1.2. 在cmd中进入到该项目工程的根目录

基于axis2的webservice和android简单的本地数据交互(下)


   1.3. 运行命令:WSDL2java -uri http://localhost:8090/axis2/services/helloWorld?wsdl
PS
1.前提AXIS必须已配置好

2.端口用你自己的
3.服务名不一定用helloWorld,用你自己定义,在部署aar的时候可看。

基于axis2的webservice和android简单的本地数据交互(下)


4. 生成stub有2种方法一种用WSDL2Java 一种还是利用插件 网上查了下说用插件经常出错,这里还是用WSDL2Java吧。
     1.4.  执行完命令之后,在eclipse中刷新工程可看到自动生成了3文件
   
 

基于axis2的webservice和android简单的本地数据交互(下)


 1.5   现在可以写客户端测试类了   webserviceClientTest.java

基于axis2的webservice和android简单的本地数据交互(下)


PS:别忘了导入包,不知道要哪些包的就将AXIS2  lib文件夹下的包全导进去
     运行结果:
         

基于axis2的webservice和android简单的本地数据交互(下)


以上说的是PC端的客户端数据交互测试

四、生成客户端(Android端)
 1. 建立android客户端测试项目   webServiceDemoAndroid

基于axis2的webservice和android简单的本地数据交互(下)


 2. AndroidManifest.xml中 开启网络权限
 <uses-permission android:name="android.permission.INTERNET" />
 3.android客户端测试代码

基于axis2的webservice和android简单的本地数据交互(下)


基于axis2的webservice和android简单的本地数据交互(下)


PS:记得导入ksoap2包  网上搜一下  有的下  这里给个链接地址
http://code.google.com/p/ksoap2-android/downloads/list?can=1&q=
 4. 运行结果:
 

基于axis2的webservice和android简单的本地数据交互(下)


==============================================================================
总结:
 1. 工作前要配置的东西比较多   比如:axis、ant、axis2 wizards插件等。
 2.对于数据的交互,这只是一个小例子,网上也有很多,我也是查了很多资料,可以看
 看“android天气预   报”的这个例子,可直接google: android webservice。
 3.android端模拟机测试本机数据交互的时候URL不可以写成localhost,你可以写成:
 http://10.0.2.2:8090/axis2/services/helloWorld?wsdl   或者是
 http://192.168.17.76:8090/axis2/services/helloWorld?wsdl   (这个是自己本机的IP和端口)
 4.一些参考文档资料:
  http://wenku.baidu.com/view/82380e2d2af90242a895e532.html

  http://wenku.baidu.com/view/8470cb0d6c85ec3a87c2c547.html



下面是一个调用webserver的准确例子

/**
 * 调用webservice
 * 
 * @param json
 * @return
 */
public String sendMsg(String json) {
try {
SoapObject rpc = new SoapObject(NAMESPACE,METHOD_NAME);
rpc.addProperty("arg0",json);


SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = false;
envelope.encodingStyle = "UTF-8";
envelope.setoutputSoapObject(rpc);
new MarshalBase64().register(envelope);
HttpTransportSE aht = new HttpTransportSE(URL,60 * 1000);


aht.call(SOAP_ACTION,envelope);
Object result = (Object) envelope.getResponse();
Log.d(TAG,result.toString());
return String.valueOf(result);
} catch (Exception e) {
e.printstacktrace();
}
return null;
}


1我以前的代码和你的代码有一下不同处:
envelope.encodingStyle = "UTF-8";
new MarshalBase64().register(envelope);
new HttpTransportSE(URL,60 * 1000);这一句没有加超时

2另外刚才刚调试是第一次出现错误: org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://www.w3.org 查查后这个事SOAP版本问题,改成11后没问题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐