2009-05-27 5 views
1

J'ai utilisé wsdl2ruby pour générer un client pour un service Web. Quand une méthode de service déclenche l'une des exceptions définies dans le WSDL, j'aimerais accéder aux attributs de l'objet d'exception. D'après ce que je peux dire, l'objet d'exception a été rassemblé dans un objet SOAP :: Mapping :: référencé par l'attribut detail de l'objet SOAP :: FaultError mis à la disposition du bloc RESCUE. Bien que SOAP :: Mapping :: Object répond à une méthode marshal_load, cette méthode prend un paramètre, dumpobj, ce qui me fait penser que je suis supposé fournir cet objet comme paramètre de la méthode plutôt que d'utiliser l'objet comme méthode destinataire. Est-ce que quelqu'un peut me montrer un exemple de la façon correcte de démasquer l'objet d'exception?Exception Unmarshalling dans wsdl2ruby Attribut de détail SOAP :: FaultError

Répondre

1

ressemble à la unmarshalling est déjà fait, si vous sonde dans le 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 
Questions connexes