Invocation D'un Service Web avec PL - Trivadis
Invocation D'un Service Web avec PL - Trivadis
Invocation D'un Service Web avec PL - Trivadis
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
fault_string :=<br />
fault_node.extract('/soap:Fault/faultstring/child::text()',<br />
'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/').ge<br />
tstringval();<br />
raise_application_error(-20000, fault_code || ' - ' ||<br />
fault_string);<br />
END IF;<br />
END;<br />
Listing 8 - Traitement des erreurs SOAP<br />
Le listing 9 contient l'appel du service web par la fonction invoke :<br />
resp := demo_soap.invoke(req,<br />
'http://www.alethea.net/webservices/LocalTime.asmx',<br />
'http://www.alethea.net/webservices/LocalTimeByZipCode');<br />
Listing 9 - <strong>Invocation</strong> du service web LocalTimeByZipCode<br />
2.6. Présentation finale du résultat<br />
Traiter le document XML à l'aide de la fonctionnalité XMLTYPE permet d'économiser un<br />
temps précieux. Toutefois, si le résultat délivré par le service web se révèle être une simple<br />
chaîne (string), il est alors judicieux d'utiliser une autre fonction auxiliaire pour gérer le<br />
traitement de cette chaîne et sa présentation finale (voir le listing 10). La fonctionnalité<br />
XMLTYPE XPath est alors des plus utiles, encore une fois.<br />
FUNCTION get_return_value(resp IN OUT NOCOPY response, name IN<br />
VARCHAR2, namespace IN VARCHAR2) RETURN VARCHAR2 AS<br />
BEGIN<br />
RETURN resp.doc.extract('//'||name||'/child::text()',<br />
namespace).getstringval();<br />
END;<br />
Listing 10 - Lire la chaîne de résultat dans le message SOAP<br />
Le listing 11 présente de quelle manière la réponse SOAP est transmise à la fonction<br />
get_return_value pour en extraire la chaîne VARCHAR.<br />
RETURN demo_soap.get_return_value(resp,<br />
'LocalTimeByZipCodeResult',<br />
'xmlns="http://www.alethea.net/webservices/"');<br />
Listing 11 - Transfert de la réponse SOAP<br />
3. Exécution de l'exemple<br />
Pour réaliser soi-même l'exemple de notre article, il suffit de suivre quelques étapes très<br />
simples.<br />
Pour commencer, exécutez le script demosoap.sql dans SQL*Plus, afin de créer le package<br />
demo_soap mentionné précédemment.<br />
Le listing 12 affiche le package time_service contenant le code nécessaire à l'exécution du<br />
service web LocalTimeByZipCode. Les étapes présentées ci-dessous sont analogues aux étapes<br />
développées dans les paragraphes précédents : l'appel de la fonction demo_soap.new_request