美文网首页Android开发Web服务访问专题——Ksoap2Android开发
【Android开发】soap-android实现安卓soap通

【Android开发】soap-android实现安卓soap通

作者: 誓词倾城 | 来源:发表于2016-06-30 09:25 被阅读2814次

前言:在最近参与的项目中,需要实现Android发送soap请求,获取Webservice数据,故做此文章做一个总结。
目前,Google更倾向于Restful风格的通信,它并没有对Soap请求封装,所以我们使用的是第三方jar包:ksoap2-android

1. 开发环境

  • win7 64位
  • Android studio2.1.1
  • ksoap2-android 3.5.0

2. 关于 ksoap2-android

  1. 官网
    http://simpligility.github.io/ksoap2-android/

  2. 源码地址
    https://github.com/simpligility/ksoap2-android

3. 关于WSDL

作为Webservice通信的重要一环,我们需要对wsdl文档有一些基本的了解,这样才能更好的调用Webservice服务。

4. 使用教程

  1. 导入jar包
    下载地址:
    https://javalibs.com/artifact/com.google.code.ksoap2-android/ksoap2-android-assembly
  1. 代码示例
// 摄氏度 转 华氏温度
public void calculate() {
//        设置命名空间、访问地址、方法名
    String SOAP_ACTION = "http://www.w3schools.com/xml/CelsiusToFahrenheit";
    String METHOD_NAME = "CelsiusToFahrenheit";
    String NAMESPACE = "http://www.w3schools.com/xml/";
    String URL = "http://www.w3schools.com/xml/tempconvert.asmx";
try {
//            创建soapObject,即拼装soap bodyin
            SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
//            添加传入参数,根据具体格式测试
            Request.addProperty("Celsius", getCel);
//            创建soap 数据
            SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
            soapEnvelope.dotNet = true;
            soapEnvelope.setOutputSoapObject(Request);

            HttpTransportSE transport = new HttpTransportSE(URL);
//          soap 协议发送
            transport.call(SOAP_ACTION, soapEnvelope);
//            soap 请求完成后返回数据并转换成字符串
            resultString = (SoapPrimitive) soapEnvelope.getResponse();

            Log.i(TAG, "Result Celsius: " + resultString);
            } catch (Exception ex) {
            Log.e(TAG, "Error: " + ex.getMessage());
        }

5. 小结

项目源码:http://git.oschina.net/tobe/MJAndroidDemo/tree/master/SoapAndroidDemo
参考博客:https://trinitytuts.com/load-data-from-soap-web-service-in-android-application/

相关文章

网友评论

  • b85f48bbf79a:在调用中出现SoapFault - faultcode: 'SOAP-ENV:Client' faultstring: 'Method 'GetTest' not implemented: method name or namespace not recognized' faultactor: 'null' detail: null。这个异常是什么情况呢?
    誓词倾城:GetTest方法没实现吧,你查看一下是不是缺少了包,还是啥的。自己调试一下吧,具体啥问题我也muji啊
  • Cloverss:撸主,我想传递对象,确切说想传递json对象,我该怎么破
    誓词倾城:json对象http协议就解决了,你可以找一些demo.或者查一下httpclient,jackson,okhttp
  • 弹指一挥间_:学习了~
    誓词倾城:@弹指一挥间_ :pray:
  • feng_斩月:谢谢分享,可否加下楼主QQ,我的1130262119
    誓词倾城:@feng_斩月 私信就可以的,简书我经常来,比上QQ勤 :blush:

本文标题:【Android开发】soap-android实现安卓soap通

本文链接:https://www.haomeiwen.com/subject/hfsxjttx.html