Непостоянная исключительная ситуация в подробном атрибуте wsdl2ruby SOAP :: FaultError - PullRequest
1 голос
/ 27 мая 2009

Я использовал wsdl2ruby для генерации клиента для веб-службы. Когда метод службы вызывает одно из исключений, определенных в WSDL, я хотел бы получить доступ к атрибутам объекта исключения. Из того, что я могу сказать, объект исключения был преобразован в SOAP :: Mapping :: Object, на который ссылается подробный атрибут объекта SOAP :: FaultError, который сделан доступным для блока RESCUE.

Хотя SOAP :: Mapping :: Object отвечает на метод marshal_load, этот метод принимает один параметр, dumpobj, что заставляет меня думать, что я должен предоставить этот объект в качестве параметра метода, а не использовать объект в качестве получателя метода .

Может ли кто-нибудь указать мне пример правильного способа демонтажа объекта исключения?

1 Ответ

1 голос
/ 19 ноября 2009

похоже, что демонтирование уже выполнено, если вы исследуете 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
...