1

使用 CXF 2.2.3 调用 WebService 时出现以下错误。WebService返回数据时发生错误。

解组错误:意外元素(uri:“http://service.claimservice.hospital.www.wcb.ab.in”,local:“accidentAddress”)。预期元素是 <{http://domain.claimservice.hospital.www.wcb.ab.in}employerContactInfo>、<{http://domain.claimservice.hospital.www.wcb.ab.in}accidentCountry>、< {http://domain.claimservice.hospital.www.wcb.ab.in}denialReason>,<{http://domain.claimservice.hospital.www.wcb.ab.in}workerContactInfo>,<{http:/ /domain.claimservice.hospital.www.wcb.ab.in}accidentPostalCode>,<{http://domain.claimservice.hospital.www.wcb.ab.in}entitlementDecisionDate>,

如果可以通过更改我的 wsdl 来摆脱这个错误,谁能告诉我?

谢谢,

4

1 回答 1

1

简短的回答是,该请求在 XML 中包含一个具有完全限定名称的{http://service.claimservice.hospital.www.wcb.ab.in}accidentAddress元素,该元素位于仅“预期元素”列表中的元素有效的位置。

这基于解组器的上下文,最终基于从中读取数据类型的模式(应该是呈现/导入到 WSDL“类型”部分的模式)。

根据问题中的信息,响应管道是问题所在,因此服务器端编组器和客户端解组器不同步(由不同的模式创建)。

建议的故障排除(假设在服务器端使用编组器对象):

  1. 为有问题的消息捕获 XML。

  2. 确定 XML 是否与 WSDL 的类型部分中呈现的内容一致。

  3. 如果 XML 与 WSDL 兼容,那么可能的问题是客户端解组器提供的数据类型与 WSDL 中提供的数据类型不同。

  4. 如果 XML 与 WSDL 不兼容,则服务器端 XML 编组器正在创建不正确的消息(或者它正在创建正确的消息并且 WSDL 不正确......它发生了)。在这种情况下,编组器可能是针对过时的数据类型创建的。

如果不使用 marshaller 对象而是手动创建服务响应,则问题是在它不是 XML 消息的有效部分或它是消息的有效部分但位于错误位置时正在创建的事故地址元素相对于包含元素。

这有点啰嗦,但希望包含足够的信息来提供帮助。

于 2012-05-14T04:01:03.430 回答