调用webservice总结:
  1.加入第三方的jar包 Ksoap2-android-XXX  
  2.访问响应的webservice的网站,查看响应的信息,得到nameSpace,methodName,url,soapAction
  3.如果request信息还有带有SoapHander的。那么就要封装:依据参数封装:

  Element[] header = new Element[1];
header[0] = new Element().createElement(nameSpace, "SoapHeader"); Element userName = new Element().createElement(nameSpace, "UserID");
userName.addChild(Node.TEXT, UserID);
header[0].addChild(Node.ELEMENT, userName); Element pass = new Element().createElement(nameSpace, "PassWord");
pass.addChild(Node.TEXT, PassWord);
header[0].addChild(Node.ELEMENT, pass);

4.封装request信息的SoapBody

 // 指定WebService的命名空间和调用的方法名
SoapObject soapObject=new SoapObject(nameSpace, methodName);
//处理soap12:Body数据部分,也就是请求数据的参数
soapObject.addProperty("loginName",username);
soapObject.addProperty("password",password);

5.指定SoapSerializationEnvelope信息

 //SoapEnvelope.VER11 表示使用的soap协议的版本号 1.1 或者是1.2
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.headerOut=header;
envelope.bodyOut=soapObject;
envelope.dotNet = true;
envelope.setOutputSoapObject(soapObject);

6.指定HttpTransportSE

 HttpTransportSE ht = new HttpTransportSE(url); 

7.访问webservice服务器

ht.call(soapAction, envelope);

8.两种方式获取服务器返回的信息:

try{
result =(SoapObject) soapEnvelope.getResponse();}
catch(ClassCastException e){
result =(SoapObject)soapEnvelope.bodyIn;}

9.解析字符串str获取客户端想要的信息

注意:1.在做android  Webservice开发的时候一般情况下大家接受webservice服务器返回值的时候都是使用SoapObject soapObject = (SoapObject) envelope.getResponse();这个来接受返回来的值,但这种方法往往会产生java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive这样的错误。在服务器端返回值是String类型的数值的时候使用SoapObject soapObject = (SoapObject) envelope.getResponse();和 SoapObject result = (SoapObject)envelope.bodyIn;这两种方法来接受值都会报出 java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive这样的错误。 我们可以使用 Object object = (Object)envelope.getResponse();就可以解决这种错误。

2.如果在导入ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar后虽然没有报错,但是运行时还是提示某个class找不到,必须:

项目的Properties-->Java Build Path-->Order and Export 对相应的jar包打上勾,然后将工程clean,然后编译运行。

最新文章

  1. 浅析“依赖注入(DI)/控制反转(IOC)”的实现思路
  2. LeetCode - Balanced Binary Tree
  3. 问题 A: 【动态规划】采药_二维数组_一维数组
  4. sql server 2008 跨服务器查询
  5. BZOJ4551: [Tjoi2016&Heoi2016]树
  6. 【原】就IOS发布app时如何保护文本资源的一个方法
  7. (六)6.5 Neurons Networks Implements of Sparse Autoencoder
  8. 全球各大运营商黑莓ROM官网下载链接汇总
  9. 利用apktool反编译apk
  10. 用微信点单 订餐系统打造属于个人的O2O外卖订餐行业商业平台
  11. HTML5 Canvas鼠标与键盘事件
  12. Android, BaseAdapter 处理大数据量时的优化
  13. iOS 图形编程总结
  14. Spring MVC知识点整理
  15. Vue 组件异步加载(懒加载)
  16. MFC编程之数值调节按钮
  17. Scala(一) —— 基础
  18. 在Windows服务中托管 ASP.NET Core的坑
  19. Gym-100451B:Double Towers of Hanoi
  20. yii2 basic版 MVC 部分

热门文章

  1. 启用密码管理之前创建的用户连接Oracle报ORA-28002处理一则
  2. QualityCenter的备份
  3. String.Join的实现
  4. 开启apache服务
  5. 学点c++
  6. 让VS2010记住TFS的登陆用户名和密码
  7. Push Notification总结系列(一)
  8. c# 发送Email的2中方式
  9. JavaScript修改Canvas图片
  10. NoSQL发展简史、粗略分类及选择