基于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后没问题




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值