Comment puis-je ajouter un attribut de codage à l'étiquette de corps à l'aide de Savon? J'essaie d'utiliser le savon pour me connecter à une ressource SOAP. Je peux obtenir le fichier WSDL et parcourir les méthodes.Savon: Ajout d'un codage à l'étiquette de corps
@client = Savon::Client.new("http://some.domain.com/v2messaging/service?WSDL")
lorsque je tente d'utiliser la méthode de connexion
response = @client.request :service, :login do
soap.body = {
"String_1" => "username",
"String_2" => "password"
}
end
Je reçois cette erreur:
Panne/Erreur: réponse = @ client.request: service: Connexion faire Savon: : SOAP :: Fault: (env: Client) a intercepté une exception lors de la gestion de la requête: style de codage inattendu: expected = http: //schemas.xmlsoap.org/soap/encoding/, effective
La différence dans l'étiquette du corps. Voici le xml prévu (trouvé par l'application SoapUI):
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:service="etapestryAPI/service">
<env:header/>
<env:body>
<service:login env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<String_1>username</String_1>
<String_2>password</String_2>
</service:login>
</env:body>
</env:Envelope>
Savon envoie:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:service="etapestryAPI/service" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ins0="http://java.sun.com/jax-rpc-ri/internal" xmlns:ins1="etapestryAPI/service">
<env:Body>
<service:login>
<String_1>username</String_1>
<String_2>password</String_2>
</service:login>
</env:Body>
</env:Envelope>
Il y a quelques différences entre ceux-ci, mais l'erreur renvoyée doit faire avec l'env: attribut encodingStyle sur la balise env: login. Comment peut-on ajouter cet attribut?