Androd中的soap协议

Posted 志向远大

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Androd中的soap协议相关的知识,希望对你有一定的参考价值。

1.引用ksoap2.jar包

2.调用相应的Api,首先创建SoapObject对象

// 实例化SoapObject对象,指定webService的命名空间(从相关WSDL文档中可以查看命名空间)
        SoapObject soapObject = new SoapObject(ConstantsMember.targetNameSpace,
                ConstantsMember.getSupportProvince);

其中getSupportProvince:是方法名; targetNameSpace:命名空间

    public static final String getSupportProvince = "GetAppPayPrePayInfo"; // 获取预定id的方法
    public static final String getOtherParameters = "GetAppPayCallPayParamInfo"; // 获取调起支付功能其他参数的方法

3.填充你要传递的参数

// 假设方法有参数的话,设置调用方法参数
        soapObject.addProperty("body", hm.get("hotelName").toString());
        // soapObject.addProperty("body", "阿玛尼国际酒店");
        soapObject.addProperty("detail", "酒店");
        soapObject.addProperty("attach", attach);
        soapObject.addProperty("out_trade_no", code);
        // soapObject.addProperty("out_trade_no", "201606220226446");
        soapObject.addProperty("total_fee", totalFee);

4.链接服务器,把soapObject传进去,拿到回调的参数

    // 设置SOAP请求信息(参数部分为SOAP协议版本号,与你要调用的webService中版本号一致):
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(soapObject);
        // 构建传输对象,并指明WSDL文档URL:
        @SuppressWarnings("deprecation")
        androidHttpTransport httpTranstation = new AndroidHttpTransport(
                ConstantsMember.SOAP_ADDRESS);
        try 
            // 调用WebService(其中参数为1:命名空间+方法名称,2:Envelope对象):
            httpTranstation.call(ConstantsMember.targetNameSpace
                    + ConstantsMember.getSupportProvince, envelope);
            mResult = envelope.getResponse().toString();
            System.out.println("result:::" + mResult);

         catch (IOException e) 
            e.printStackTrace();
         catch (XmlPullParserException e) 
            e.printStackTrace();
        

其中SOAP_ADDRESS:Java接口服务器地址

public static final String SOAP_ADDRESS = "http://120.25.192.225:813/WXPayWebService.asmx"; // 测试的

mResult:是服务器返回的参数

所有代码汇总:

    // 实例化SoapObject对象,指定webService的命名空间(从相关WSDL文档中可以查看命名空间)
        SoapObject soapObject = new SoapObject(ConstantsMember.targetNameSpace,
                ConstantsMember.getSupportProvince);
        String hotelId = hm.get("hotelId").toString();
        // 参数内容:type_content_酒店ID_支付类型(具体type、content值根据不同的支付动作参见下表),例如:4_3_酒店ID_支付类型
        // 【支付类型:0公众号支付,1App支付,2支付宝支付】
        //【系统定义酒店ID:-1 爱美家智能酒店;-2 云客智能酒店】
        String attach = body + "_-1_1";
        String code = getOutTradeNo();
        // 假设方法有参数的话,设置调用方法参数
        soapObject.addProperty("body", hm.get("hotelName").toString());
        // soapObject.addProperty("body", "阿玛尼国际酒店");
        soapObject.addProperty("detail", "酒店");
        soapObject.addProperty("attach", attach);
        soapObject.addProperty("out_trade_no", code);
        // soapObject.addProperty("out_trade_no", "201606220226446");
        soapObject.addProperty("total_fee", totalFee);

        // 设置SOAP请求信息(参数部分为SOAP协议版本号,与你要调用的webService中版本号一致):
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(soapObject);
        // 构建传输对象,并指明WSDL文档URL:
        @SuppressWarnings("deprecation")
        AndroidHttpTransport httpTranstation = new AndroidHttpTransport(
                ConstantsMember.SOAP_ADDRESS);
        try 
            // 调用WebService(其中参数为1:命名空间+方法名称,2:Envelope对象):
            httpTranstation.call(ConstantsMember.targetNameSpace
                    + ConstantsMember.getSupportProvince, envelope);
            mResult = envelope.getResponse().toString();
            System.out.println("result:::" + mResult);

         catch (IOException e) 
            e.printStackTrace();
         catch (XmlPullParserException e) 
            e.printStackTrace();
        

以上是关于Androd中的soap协议的主要内容,如果未能解决你的问题,请参考以下文章

SOAP是啥?WEBService是啥?

强制 Soap/WCF 使用 HTTP 而不是 TCP 协议

php下调用soap实现对接

如何在android中集成saber soap api,获取所有酒店列表和战斗

soap协议概述

08_使用TCP/IP Monitor监视SOAP协议