[英]How to Ignore unavailable fields from a SOAP Response
我有一个用SOAP开发的Web服务,已经为其生成了一个客户端。 现在我正在添加一个新的字段来响应Web服务。 现在,当我调用客户端时,它会给出错误,因为更新的字段在客户端可用的数据类中不可用。有没有办法忽略那些在解组时在数据类中不可用的属性。 同样在REST中工作正常。 TIA
这在REST
有效,因为只有HTTP
才能与SOAP
over HTTP
一样具有如此严格的通信协议。 在SOAP
中,默认情况下制定了更严格和详细的技术合同,双方必须遵守该合同。 如果你想要REST
的相同行为,你必须自己实现验证和规则,因为它有点开放 ,这是想法的一部分。
要解决您的问题,您可能需要使用新的WSDL
文件重新生成客户端代理/存根类,以使客户端知道已添加新字段并且可以在服务器的响应中预期。 您也可以手动将此字段添加到当前存根类中的响应中,并将其标记为可选,而不使用任何自动生成工具。
如果您希望在将来引入更改时完全避免破坏客户端(并重新生成/修改类),您可以尝试:
WSDL
中的属性minOccurs=0
(仅当您的用例允许时才可以)。 请参阅XML架构指示器 。 简而言之,在您的WSDL中,您的元素必须如下所示: <xs:element name="el_name" type="xs:string" minOccurs="0" maxOccurs="1"/>
。 尝试这种方式,而无需在客户端更新合同。 同样,这取决于客户遵守合同的严格程度。 如果您有许多无法修改的客户端并且您不希望与它们断开通信合同,则这些方法很有用。 请注意,以上所有选项都需要付出代价 - 您将为您提供更多维护和管理,以提高与客户的兼容性。 所以明智地选择。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.