部分标签无命名空间的SOAP请求是否符合官方标准规范?
SOAP请求合法性校验结论
- 纯XML语法层面:请求是合法的。整份XML标签闭合正确,所有声明的命名空间前缀都有对应的命名空间定义,通用XML解析器可以正常解析无报错。其中未携带前缀的
<entete>、<profile>、<input>等节点默认归属于空命名空间,XML语法本身允许空命名空间节点存在。 - 服务契约符合性层面:请求大概率不符合对应SOAP服务的规范要求。SOAP请求的业务合法性完全绑定对应服务的WSDL定义,从你提供的报文结构结合常规Tibco服务开发规范来看:
- 通常
ns2:request下的业务子节点需要归属到http://www.tibco.com/service业务命名空间下,你当前使用空命名空间的节点会导致服务端无法识别对应业务参数,大概率会返回参数缺失、结构不匹配的错误。
- 通常
修正建议
如果确认这些业务节点归属于http://www.tibco.com/service命名空间,可以直接在ns2:request节点上声明默认命名空间,无需逐个给子节点加前缀,修正后的片段如下:
<ns2:request xmlns="http://www.tibco.com/service"> <entete> <profile>Default</profile> </entete> <input> <type>W</type> <codeRegion>X</codeRegion> </input> </ns2:request>
内容的提问来源于stack exchange,提问作者Dmitry Kompot
相关产品推荐
相关产品推荐

