先看看下面的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));
分享到:
相关推荐
为了使WSDL能够正确地识别和映射`ResResourcePO`类型的集合,我们可以将`List<ResResourcePO>`改为数组`ResResourcePO[]`。这样修改后的`UserInfoPO`类如下所示: ```java public class UserInfoPO implements ...
- `wsdl:message`:定义服务交互中的消息结构,包括输入和输出参数。 - `wsdl:portType`:定义服务的操作集合,不涉及具体实现细节。 - `wsdl:binding`:定义服务如何通过特定协议(如HTTP、SOAP)进行通信。 - ...
例如,JAX-RPC提供商(如BEA WebLogic)可以通过API读取WSDL文档并生成相应的代理类(stub),IBM WebSphere、Microsoft .NET 和 Apache Axis 等也有类似的工具来生成客户端和服务端所需的代码。 #### 二、WSDL的...
赠送jar包:wsdl4j-1.6.3.jar; 赠送原API文档:wsdl4j-1.6.3-javadoc.jar; 赠送源代码:wsdl4j-1.6.3-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
3. **类型定义错误**:WSDL文件中可能会定义一些数据类型,如复杂类型或简单类型。如果类型定义有误,例如类型名称未定义或者类型定义不完整,服务将无法正确理解。检查并修正这些类型定义。 4. **端点(Endpoint)...
<wsdl:port name="SumSoapEndpoint" binding="tns:SumSoapBinding"> <soap:address location="http://localhost:8080/Sum"/> </wsdl:port> </wsdl:service> ``` 以上是创建一个简单 WSDL 文件的过程。通过这个...
2. **javax.wsdl API**:此API包含一系列的Java类和接口,如Definition、PortType、Binding、Service等,它们分别对应WSDL文档中的各个元素。开发者可以使用这些类来创建、修改和读取WSDL文件。 3. **WSDL的使用...
在"onvif wsdl最新文件"这个主题中,我们关注的是ONVIF设备如何通过WSDL文件与其他系统进行交互。 在2016年下载的这些最新ONVIF WSDL文件中,包含了ONVIF协议的不同服务接口,让我们逐一解析它们: 1. **media....
- **RPC/Encoded**:此样式将方法名映射为SOAP消息中的根元素,同时在SOAP消息中编码参数类型信息。WSDL示例中展示了`<soap:body use="encoded" ...>`,表示使用编码方式。这意味着服务调用看起来像远程过程调用,...
3. **类型定义**:使用 XML Schema 定义了数据类型,包括简单类型和复杂类型。 4. **消息定义**:定义了 Web 服务的消息格式。 5. **端口类型定义**:定义了抽象接口,即操作集合。 6. **绑定定义**:指定了具体的...
<wsdl:definitions targetNamespace="http://com.liuxiang.xfireDemo/HelloService" xmlns:tns="http://com.liuxiang.xfireDemo/HelloService" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:...
在IT行业中,ISAG(Integrated Service Access Gateway,集成服务接入网关)是电信网络中一个重要的组成部分,主要用于提供多种业务的接入和控制。WSLD(Web Services Description Language)则是一种XML格式,用于...
WS-DIScovery(Web Services Discovery)是ONVIF规范中的一部分,用于设备发现,而WSDL(Web Services Description Language)则是用来描述网络服务的接口,定义了服务提供的操作、消息格式和网络地址。 标题"onvif...
<wsdl:part name="greeting" element="xsd:string"/> <!-- 输出参数 --> </wsdl:message> <wsdl:portType name="HelloServicePortType"> <wsdl:operation name="sayHello"> <wsdl:input message="tns:...
wsdl2java源码原作者注 该插件不再由其创建者维护。 这个存储库只是一个分支,将被动维护以跟上我依赖它的项目。 wsdl2java gradle 插件 // TODO 采用自述文件 用于从 wsdl 生成 java 的 Gradle 插件,在引擎盖下...
Web服务(Web Service)是一种基于互联网的、使用标准协议(如HTTP)进行通信的应用程序...同时,对于天气预报WSDL的理解和应用,不仅限于本例中的基本调用,还可以扩展到更复杂的数据查询和展示,以满足各种实际需求。
<wsdl:binding name="HelloServiceSoapBinding" type="tns:HelloServicePortType"> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/> ... <wsdl:operation name="sayHello"> <soap12:...
6. **WSDL的结构与元素**:理解WSDL文件的结构至关重要,其中包括`<wsdl:types>`定义数据类型,`<wsdl:message>`定义通信消息,`<wsdl:portType>`定义服务接口,`<wsdl:binding>`定义通信方式,以及`<wsdl:service>`...
<wsdl:part name="parameters" element="tns:sayHelloResponse"/> </wsdl:message> <!-- 抽象操作 --> <wsdl:portType name="HelloPortType"> <wsdl:operation name="sayHello"> <wsdl:input message="tns:...
wsdl4j-1.6.2.jar Manifest-Version: 1.0 Ant-Version: Apache Ant 1.6.5 Created-By: 1.4.1 (IBM Corporation) Specification-Title: JWSDL Specification-Version: 1.2 Specification-Vendor: IBM (Java Community...