2009-10-11 7 views
0

J'essaie de configurer un service Web pour la passerelle SMS de Celltrust. J'ai leur SDK et j'essaie d'utiliser soap4r pour créer les en-têtes personnalisés dont il a besoin. Je ne sais pas exactement ce que je dois faire pour l'obtenir dans leur format, car ils ne me fournissent pas un document XML réel montrant ce dont ils ont besoin; tout ce qu'ils disent est que dans l'en-tête, vous devez donner un nom d'utilisateur et mot de passe. Étant donné l'exemple de code PHP suivant, comment ferais-je cela dans Ruby? J'ai créé une classe dérivée de SOAP :: Header :: SimpleHandler. Ce dont je ne suis pas sûr, c'est si j'ai besoin de spécifier deux fois l'espace de noms (une fois pour le nom d'utilisateur, une fois pour le mot de passe) ou comment il est généré. La documentation ne donne aucun nom pour l'espace de noms et je ne sais pas comment faire l'appel à "new SoapHeader" dans Ruby correctement.Confondre à propos des en-têtes personnalisés soap4r

Quelqu'un peut-il m'aider avec ceci?

Répondre

0

Vous devez créer une sous-classe de SOAP :: En-tête :: SimpleHandler, comme vous le mentionnez:

class MyHandler < SOAP::Header::SimpleHandler 

    def initialize(namespace, name, value) 
    super(XSD::QName.new(namespace, name)) 
    @value = value 
    end 

    def on_simple_outbound 
    @value 
    end 
end 

Ensuite il suffit de faire:

namespace = 'INSERT_NAMESPACE_URL_HERE' 
# 'driver' below is the Soap4R driver for the service 
driver.headerhandler << MyHandler.new(namespace, 'Username', 'INSERT_USERNAME_HERE') 
driver.headerhandler << MyHandler.new(namespace, 'Password', 'INSERT_PASSWORD_HERE')