wsdl中,soapenc:string和soapenc:int是什么类型?

先看看下面的wsdl片段:
 <complexType name="OrderRelationUpdateNotifyRequest">
<sequence>
<element name="recordSequenceId" nillable="true" type="soapenc:string"/>
<element name="userIdType" nillable="true" type="soapenc:int"/>
<element name="userId" nillable="true" type="soapenc:string"/>
<element name="serviceType" nillable="true" type="soapenc:string"/>
<element name="spId" nillable="true" type="soapenc:string"/>
<element name="productId" nillable="true" type="soapenc:string"/>
<element name="updateType" nillable="true" type="soapenc:int"/>
<element name="updateTime" nillable="true" type="soapenc:string"/>
<element name="updateDesc" nillable="true" type="soapenc:string"/>
<element name="linkId" nillable="true" type="soapenc:string"/>
<element name="content" nillable="true" type="soapenc:string"/>
<element name="effectiveDate" nillable="true" type="soapenc:string"/>
<element name="expireDate" nillable="true" type="soapenc:string"/>
<element name="time_stamp" nillable="true" type="soapenc:string"/>
<element name="encodeStr" nillable="true" type="soapenc:string"/>
</sequence>
</complexType>

看到没,里面有很多soapenc:string和soapenc:int类型的元素,开始没太注意。后来发现用wsdl2java生成的代码,都不是java.lang.String类型或int类型的。axis2对其加了一层壳。

比如上面的userId元素,如何在服务端获取呢?
org.apache.axis2.databinding.types.soapencoding.String UserId0 = req.getUserId();
String UserId = UserId0 != null ? UserId0.getString() : null;
log.debug("handle UserId=" + UserId);


又比如上面的updateType元素,在服务端这样获取:
org.apache.axis2.databinding.types.soapencoding._int UpdateType0 = req.getUpdateType();
Integer UpdateType = UpdateType0 != null ? UpdateType0.get_int() : null;
log.debug("handle UpdateType=" + UpdateType);


像这样的类型,在设置的时候也需要手动加壳,举两个例子:
static org.apache.axis2.databinding.types.soapencoding.String toSoapString(String str) {
org.apache.axis2.databinding.types.soapencoding.String enc = new org.apache.axis2.databinding.types.soapencoding.String();
enc.setString(str);
return enc;
}

static org.apache.axis2.databinding.types.soapencoding._int toSoapInt(int val) {
org.apache.axis2.databinding.types.soapencoding._int enc = new org.apache.axis2.databinding.types.soapencoding._int();
enc.set_int(val);
return enc;
}

使用起来是这样的:
rsp.setUserId(toSoapString("1234"));
rsp.setUpdateType(toSoapInt(1234));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来AI编程

共鸣===鼓励 打赏您随意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值