02.06.2013 Views

Invocation D'un Service Web avec PL - Trivadis

Invocation D'un Service Web avec PL - Trivadis

Invocation D'un Service Web avec PL - Trivadis

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!