wsdl2ruby SOAP :: FaultError详细信息属性中的解组异常

时间:2009-05-27 09:42:45

标签: ruby unmarshalling

我使用wsdl2ruby为Web服务生成客户端。当服务方法引发WSDL中定义的异常之一时,我想访问异常对象的属性。据我所知,异常对象已被编组到SOAP :: Mapping :: Object中,该对象由可用于RESCUE块的SOAP :: FaultError对象的detail属性引用。

虽然SOAP :: Mapping :: Object响应marshal_load方法,但该方法接受一个参数dumpobj,这让我觉得我应该提供该对象作为方法的参数,而不是使用该对象作为方法的接收者

有人能指出一个解组异常对象的正确方法的例子吗?

1 个答案:

答案 0 :(得分:1)

如果您探测SOAP :: Mapping :: Object,

看起来已经完成了解组...

rescue SOAP::FaultError => ee
  ## InvalidLogin, InvalidLocale, NoPermission, RuntimeFault
  ## ee.detail.__xmlele[0][0] is an XSD::QName object, with accessors name and namespace
  ## ee.detail.__xmlele[0][1] is a VMware::VIM25::xxx fault object
  vim_fault = ee.detail.__xmlele[0][1]
  case vim_fault.class
  when VMware::VIM25::InvalidLogin
  when VMware::VIM25::InvalidLocale
  when VMware::VIM25::NoPermission
  when VMware::VIM25::RuntimeFault