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();
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值