http://sizeed.blog.163.com/blog/static/965254512011102143952442/


此段代码是我这个项目调用Web Service的核心代码;

  使用ksoap2调用Web Service步骤如下:

  1、创建HttpTransportSE对象(传送带),该对象用于调用Web Service。

  2、创建SoapSerializationEnvelope对象(装SOAP信息的信封)。

  3、创建SoapObject对象,创建该对象时需要传入所需要调用的WebService的命名空间。

  4、如果有参数需要传递给Web Service服务器,调用SoapObject对象的addProperty(String key, Object value)方法。

  5、调用前面创建的SoapSerializationEnvelope对象的setOutputSoapObject()方法,或者直接对bodyOut属性赋值,将前面创建的SoapObject对象设为SoapSerializationEnvelope的传出的SOPA。

  6、调用HttpTransportSE对象的call()方法,并以SopaSerializationEnvlope作为参数调用远程Web Service。

  7、调用完成后,访问SoapSerializationEnvelope对象的bodyIn,该属性会返回一个SopaObjec对象,该对象代表了一个Web Service服务端返回的数据,解析该SoapObject就可以得到你想要的数据了。

  可以这样理解:

首先创建的HttpTransportSE(以下简写trans)对象可以看做它为一个传送带,SoapSerializationEnvelope对象(以下简写envelope)为一个邮递员,SoapObject(以下简写so)为一个包裹:

  so.addProperty(WordKey,word):将“询问”的信息装入包裹。

  envlope.bodyOut = so:邮递员拿上Out包裹,待送。

  ht.call(..., envlope)方法:邮递员拿着包裹,跳上传送带去访问服务器并交换数据。

  SoapObject so = (SoapObject)envlope.bodyIn:从邮递员身上拿出和服务器交换后的包裹。此包裹与上面的so不是同一个对象

  so.getProperty(...):从包裹中取出“回答”信息。

  以上就是使用ksoap2-android调用Web Service的方式。

代码:

SoapObject rpc = new SoapObject(NAME_SPACE, METHOD_NAME);//设置需调用WebService接口

//设置参数
rpc.addProperty("a", 109);
rpc.addProperty("b", 3);

// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.bodyOut = rpc;
//设置是否调用的是dotNet开发的WebService
//envelope.dotNet = true;//等价于envelope.bodyOut = rpc;

envelope.setOutputSoapObject(rpc);
HttpTransportSE transport = new HttpTransportSE(URL);

try {
//调用WebService
transport.call(SOAP_ACTION, envelope);
} catch (Exception e) {
e.printStackTrace();
}


//获取返回的数据
SoapObject object = (SoapObject) envelope.bodyIn;
//获取返回的结果
String result = object.getProperty("return")+"";
return result;


更多相关文章

  1. 《第一行代码--Android》读书笔记之使用通知和多媒体
  2. Android(安卓)之startActivityForReult 与 onActivityResult简介
  3. 数据储存方式-SharedPreferences
  4. laravel使用Dingo\Api通过response()->json()返回空对象
  5. Android(安卓)- 动态设置自定义View的id - setId
  6. android jni 包裹文件(jni wrapper) 以 speex 库为例
  7. Android(安卓)【插件化】"偷梁换柱"的高手-VirtualApk源码解析
  8. android 调用.net 的webservice .
  9. Android(安卓)- Looper / Handler / Message

随机推荐

  1. GraphWidget插件—简介
  2. Android(安卓)判断当前的界面是否是桌面
  3. Android之jni深入
  4. 【Android(安卓)studio】为按钮添加简单
  5. 如何进行adb模式下的调试
  6. [置顶] popwindow的基本使用
  7. android的make错误
  8. Android(安卓)自定义camera
  9. Android关于PagerAdapter的使用方法的总
  10. Android(安卓)9.0 适配