WebService 基本概念

WebService是一种基于SOAP协议的远程调用标准,知道webservice可以将不同操作系统平台、不同语言、不同技术整合到一块,android SDK没有直接调用webservice的库,最常用的是ksoap2-android 库。

ksoap2库

对于Android端调用WebService,有两种方式,一种自己编写代码主要通过URL获得HttpUrlConnection的方式建立与webservice的连接,然后进行I/O读写传送和获得数据,并对获得数据进行XML解析,这种方式,我没有试过。另一种就是使用第三方组件,本人比较常用的是ksoap2-android,ksoap2-android这个开源组件针对Android平台提供了一个轻量级和高效的SOAP类库,可方便实现Android端与WebService之间的通信。

ksoap2 已经搬到github上了, 项目地址:https://github.com/simpligility/ksoap2-android;

最新的jar 包:ksoap2-android 3.6.1

该文章的demo 地址:ksoap2Demo

在本Demo 中我使用的是:ksoap2-android-assembly-3.6.1-jar-with-dependencies.jar


这是一个as工程, 我把ksoap2-android 的调用写成了一个libray。

ksoap2-android 几个主要的方法

 //  指定WebService的命名空间和调用的方法名
SoapObject request = new SoapObject(nameSpace, methodName);

LinkedHashMap<String, Object> paramsList = params.getParamsList();

Iterator<Map.Entry<String, Object>> iter = paramsList.entrySet().iterator();
while (iter.hasNext())
{
Map.Entry<String, Object> entry = iter.next(); // 使用迭代器 挨个取出参数,
request.addProperty(entry.getKey(), entry.getValue());//添加参数
}
// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.bodyOut = request; //设置bodyout 属性为 请求参数

envelope.dotNet = mDotNet;//// 设置是否调用的是dotNet开发的WebService ,mDotNet 默认为false, 所以本项目周,默认没有开启

envelope.setOutputSoapObject(request);

HttpTransportSE httpTransportSE = new HttpTransportSE(url, mTimeout);//创建HttpTransportSE传输对象

httpTransportSE.debug = true;

ArrayList<HeaderProperty> headerPropertyArrayList = new ArrayList<HeaderProperty>();

headerPropertyArrayList.add(new HeaderProperty("Connection", "close"));//添加头参数

httpTransportSE.call(" ", envelope);//请求数据 第一个参数 soapAction 可以为空,第二个参数是SoapEnvelope类的子类对象。
//获取服务器响应返回的SOAP消息:
SoapObject result = (SoapObject) envelope.bodyIn;

SoapObject detail = (SoapObject) result.getProperty(methodName+"Result");

详细使用请参考demo 吧,代码中注释很完整。

更多相关文章

  1. Android开发入门之为应用添加多个Activity与参数传递
  2. android插件化-apkplug中以监听方式获取OSGI服务-09
  3. 超简单方式教你打造原生侧滑菜单
  4. Android对返回键进行处理的方式
  5. java socket参数详解:TcpNoDelay
  6. 在spring 中如何注入map,set,list,property等参数
  7. 如何将动态参数传递给jquery函数
  8. java 对称加密——密钥与加密后的数据存盘方式
  9. Jsp以get方式提交中文及特殊字符,javascript处理乱码问题

随机推荐

  1. Node.js如何将Ajax成功消息传递给app.js
  2. jQuery在点击按钮上迭代/循环遍历数据表
  3. 对于带有占位符的select2.js,我无法选择第
  4. 代替jquery $.post 跨域提交数据的N种形
  5. jQuery使用之(四)处理页面的表单元素
  6. 中国省市区地址三级联动jQuery插件
  7. 如果原始页面加载是https,那么没有完整网
  8. 无法理解如何使用javascript和jquery代码
  9. 在不触发hashchange事件的情况下更改哈希
  10. 从事件监听器OnClick中排除按钮