1

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

尽管 SOAP::Mapping::Object 响应 marshal_load 方法,但该方法采用一个参数 dumpobj,这使我认为我应该提供该对象作为方法的参数,而不是将该对象用作方法的接收者。

谁能指出我解组异常对象的正确方法的示例?

4

1 回答 1

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
于 2009-11-18T22:57:52.510 回答