2010-07-07 5 views
4

J'ai besoin d'écrire un client de savon qui est capable d'envoyer et de recevoir des messages de savon.Comment créer un client SOAP Ruby sans utiliser de WSDL?

Ce service de savon n'a pas de fichier WSDL associé et soap4r et soap semblent tous les deux en nécessiter un.

J'ai un exemple de ce que j'ai besoin de faire en Java, voir le lien ci-dessous.

http://community.cecid.hku.hk/index.php/product/article/writing_hermes_2_ws_client_under_java/#ebms-2_0-sender-ws

je pourrais utiliser java pour cela, à ce stade, il semble que ce serait plus facile. Cependant, je préfère personnellement coder en rubis et notre société a plus de ressources rubis que Java. Quelqu'un peut-il confirmer qu'il est possible de faire quelque chose de similaire à java par exemple en ruby ​​sans écrire ma propre bibliothèque de savon spécialisé ?. Je dois être en mesure d'envoyer une charge utile, qui, je crois, est habituellement sous forme d'un accessoire de savon.

Je suis particulièrement intéressé par les exemples soap4r qui n'utilisent pas de WSDL car j'ai eu du mal à en trouver avec google.

Toute aide très appréciée.

Répondre

1

Savon ne nécessite pas de document WSDL. S'il vous plaît jeter un oeil à the new documentation. Si vous connaissez le point de terminaison SOAP et espace de noms cible, vous pouvez exécuter une requête SOAP comme ceci:

client = Savon::Client.new 
    wsdl.endpoint = "http://example.com" 
    wsdl.namespace = "http://soap.example.com" 
end 

client.request :any_soap_action do 
    soap.body = { :do => "something" } 
end 
0
client = Savon::Client.new 
    wsdl.endpoint = "http://example.com" 
    wsdl.namspace = "http://soap.example.com" 
end 

Cela ne fonctionne pas, il manque un nom de bloc et le « e » dans l'espace de noms:

client = Savon::Client.new do | wsdl | 
    wsdl.endpoint = "http://example.com" 
    wsdl.namespace = "http://soap.example.com" 
end 
+2

Correction de l'orthographe de "namespace". Merci. mais vous avez tort en ce qui concerne l'argument du bloc. Si vous passez un bloc sans arguments, savon utilisera l'instance eval (avec délégation). – rubiii