我使用wsdl2ruby为Web服务生成客户端。当服务方法引发WSDL中定义的异常之一时,我想访问异常对象的属性。据我所知,异常对象已被编组到SOAP :: Mapping :: Object中,该对象由可用于RESCUE块的SOAP :: FaultError对象的detail属性引用。
虽然SOAP :: Mapping :: Object响应marshal_load方法,但该方法接受一个参数dumpobj,这让我觉得我应该提供该对象作为方法的参数,而不是使用该对象作为方法的接收者
有人能指出一个解组异常对象的正确方法的例子吗?
答案 0 :(得分:1)
看起来已经完成了解组...
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