Bonjour à tous,
après de multiples recherches je vous pose la question en croisant les doigts pour que quelqu'un ait la réponse.
Le contexte est le suivant :
j'interroge un webservice à l'aide de Perl et de la librairie SOAP::Lite.
La requête a envoyer semble excessivement simple :
<soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<recupFichier>LE_FICHIER_QUE_JE_VEUX</recupFichier>
</soapenv:Body>
</soapenv:Envelope>
Le problème est que SOAP::lite refuse obstinément de générer le tag "<recupFichier>LE_FICHIER_QUE_JE_VEUX</recupFichier>" sans rajouter des gensym autour du nom du fichier.
Exemple :
$soap->recupFichier('LE_FICHIER_QUE_JE_VEUX');
génère :
<recupFichier>
<c-gensym3 xsi:type="xsd:string">LE_FICHIER_QUE_JE_VEUX</c-gensym3>
</recupFichier>
Evidemment cela empêche la requête d'aboutir.
J'ai trouvé une méthode qui fonctionne partiellement :
1 2 3
| $document="LE_FICHIER_QUE_JE_VEUX";
$elem= SOAP::Data->type('xml' => $document);
$soap->recupFichier($elem); |
Ceci me génère alors :
<soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<recupFichier>££££££LE_FICHIER_QUE_JE_VEUX</recupFichier>
</soapenv:Body>
</soapenv:Envelope>
ATTENTION : dans le texte ci dessus, les "£" remplacent des " " (caractères d'espacement)
Tout le problème réside dans les 6 espaces qui précèdent le nom du fichier que je veux récupérer...Le nom n'est pas reconnu par le serveur et donc la requête échoue.
Mes questions sont donc :
1) Quelqu'un connait-il une méthode propre pour passer un paramètre directement dans l'appel de la méthode et qui n'utilise pas de tag et ne génère pas de gensym ?
et/ou
2) Quelqu'un sait-il comment supprimer les caractères d'espacements parasites qui sont créés dans la méthode que j'ai trouvée.
Merci par avance de votre aide.
Partager