Récemment, nous avons reçu quelques projets dans lesquels nous consommons webservices SOAP pour les données. La vérité est que c'était un moment depuis que je les ai vus dans mon travail habituel. Il ya quelques années ont été très commun pour à peu près tout ce qui pourrait impliquer la communication avec des sources externes, mais ces dernières années étaient tombés en désuétude pour des choses simples compliquées puisque tout un travail avec une simple requête HTTP et XML de base pourrait être résolu . C'est précisément ce qui a toujours été l'une des principales critiques du protocole SOAP , une forte consommation de bande passante pour une demande simple.

Jusqu'à présent, avait toujours utilisé nusoap de faire des appels SOAP de PHP , mais je suis tombé sur un problème lors de l'accès à un service d'un important moyen de communication international. Le nusoap d'appel ne retourne pas des résultats tout de test du système html tout fonctionnait correctement.

Après avoir donné de nombreux virages et n'a pas trouvé toutes les erreurs (les autres requêtes vers le même service lui-même qui a travaillé), j'ai réalisé que PHP dispose déjà d'un ensemble de fonctions SOAP natives, donc pas NuSOAP de besoin. La question a été serait-il fonctionne bien, en quelque sorte. Après l'ajout de l'extension appropriée se pose une petite incohérence. NuSOAP ne peut pas utiliser native et vous courez la même installation de PHP. Autrement dit, si vous activez l'extension SOAP, nusoap arrêter de travailler et commencer à lancer des messages d'erreur car la plupart des fonctions que vous utilisez le même nom que le natif, qui serait alors noms réservés. Si vous avez n'importe quelle application qui utilise nusoap sur la même machine aussi avoir à migrer pour utiliser les fonctions natives.

L'exemple d'aujourd'hui est un simple appel à un service qui retourne une liste des nouvelles.

Le processus est très simple, vous devez l'url du webservice, la méthode que vous appelez et les paramètres à passer et, comme dans tout service SOAP va retourner XML.

  1. ; //url del servicio $ Service = "http://dominio.com/noticias?wsdl" / / url du service
  2. ( ) ; //parametros de la llamada $ Paramètres = tableau () / / paramètres de l'appel
  3. 'idioma' ] = "es" ; $ Paramètres ['language'] = "est";
  4. 'usuario' ] = "manolo" ; $ Paramètres ['user'] = "manolo";
  5. 'clave' ] = "tuclave" ; $client = new SoapClient ( $servicio , $parametros ) ; $ Paramètres ['key'] = "tuclave"; $ client = new SoapClient (service $, $ parameters);
  6. -> getNoticias ( $parametros ) ; //llamamos al métdo que nos interesa con los parámetros $ Result = $ client -> getNoticias ($ parameters) / / Appel de la metdo qui nous intéresse les paramètres

Avec ces simples directives que nous avons en $ result l'appel de service XML résultat. Comment travailler avec XML est un peu lourd, le convertir en un tableau associatif de sorte que nous facilitons pour traiter les données, nous utilisons la fonction obj2array J'indique ci-dessous.

  1. $result ) ; $ Result = obj2array ($ result);
  2. [ 'resultado' ] [ 'noticias' ] ; Nouvelles $ = $ result ['résultat'] ['nouvelles'];
  3. ( $noticias ) ; $ N = nombre ($ nouvelles);
  4. / / Traiter le résultat que tout autre tableau
  5. $i = 0 ; $i < $n ; $i ++ ) { for ($ i = 0, $ i <$ n, $ i + +) {
  6. [ $i ] ; Nouvelles $ = $ nouvelles [$ i];
  7. [ 'id' ] ; $ Id = $ nouvelles ['id'];
  8. / / Ici passer le reste de votre code où vous traiter les données reçues
  9. }
  10. $obj ) { fonction obj2array ($ obj) {
  11. ( ) ; $ Out = tableau ();
  12. $obj as $key => $val ) { foreach ($ obj as $ key => $ val) {
  13. true ) { commutateur (true) {
  14. ( $val ) : cas is_object ($ val):
  15. $key ] = obj2array ( $val ) ; $ Out [$ key] = obj2array ($ val);
  16. break;
  17. ( $val ) : cas is_array ($ val):
  18. $key ] = obj2array ( $val ) ; $ Out [$ key] = obj2array ($ val);
  19. break;
  20. par défaut:
  21. $key ] = $val ; $ Out [$ key] = $ val;
  22. }
  23. }
  24. ; return $ sur;
  25. }

Dans la deuxième ligne, nous gardons les éléments du tableau que nous voulons traiter. Si vous ne savez pas ce que vos déclarations de Webservice peut faire un var_dump ($ result) et voir tous les résultats. Dans notre cas, ce qui est une suite de nouvelles, on se retrouve avec l'élément qui a les nouvelles.

Comme vous avez pu le remarquer, je n'ai pas inquiet gestion des erreurs lors de l'appel du webservice. Que je laisse comme un exercice pour vous, c'est Août et je ne veux pas icon razz Consumiendo webservices SOAP desde PHP webservice soap PHP . En manuel de PHP est l'ensemble des informations.

Et c'est tous les gens, aujourd'hui était un exemple simple mais très utile lorsque vous avez besoin d'utiliser du savon.