Vor kurzem haben wir ein paar Projekte, in denen wir verbrauchen erhielt webservices SOAP für Daten. Die Wahrheit ist, dass es eine Weile war, da ich sie sah in meiner üblichen Arbeit. Vor ein paar Jahren waren sehr häufig für fast alles, was die Kommunikation mit externen Quellen würde bedeuten, jedoch den letzten Jahren war in Vergessenheit für einige einfache Dinge da recht einen Job mit einem einfachen HTTP-Anforderung und grundlegende XML kompliziert gefallen könnte gelöst werden . Genau dies ist seit jeher einer der Hauptkritikpunkte des Protokolls SOAP , hohe Bandbreiten-Verbrauch für eine einfache Anfrage.

Bis jetzt immer benutzt hatte nusoap zu SOAP Anrufe tätigen PHP , aber ich lief in ein Problem beim Zugriff auf einen Dienst ein wichtiges Mittel der internationalen Kommunikation. Der Aufruf nusoap nicht wieder Ergebnisse während von html Testsystem alles funktionierte einwandfrei.

Nachdem er viele Kurven und konnten keine Fehler (andere Anforderungen an den gleichen Dienst selbst, gearbeitet hat) Ich erkannte, dass PHP bereits eine Reihe von SOAP-Funktionen gebürtig, so dass keine Notwendigkeit nusoap. Die Frage wurde wäre es gut zu funktionieren, wie es war. Nach Zugabe der entsprechenden Erweiterung entsteht eine kleine Unstimmigkeit. Nusoap können nicht nativen und Sie dieselbe Installation von PHP. Anders ausgedrückt, wenn Sie die SOAP-Erweiterung zu aktivieren, beenden nusoap arbeiten und anfangen zu werfen Fehlermeldungen, weil viele der Funktionen, die Sie haben den gleichen Namen wie das native, die dann reservierten Namen zu verwenden wäre. Wenn Sie irgendeine Anwendung, die nusoap verwendet auf der gleichen Maschine haben müssen sie auch die Migration auf native Funktionen nutzen.

Heutige Beispiel ist eine einfache Ruf zu einem Service, der eine Liste von Nachrichten gibt.

Der Prozess ist sehr einfach, benötigen Sie die URL des Webservice, die Methode, die Sie aufrufen und die Parameter zu übergeben und, wie in jeder SOAP XML-Dienst zurückzukehren.

  1. ; //url del servicio $ Service = "http://dominio.com/noticias?wsdl" / / url des Dienstes
  2. ( ) ; //parametros de la llamada $ Parameters = array () / / Parameter des Aufrufs
  3. 'idioma' ] = "es" ; $ Parameter ['language'] = "ist";
  4. 'usuario' ] = "manolo" ; $ Parameter ['user'] = "manolo";
  5. 'clave' ] = "tuclave" ; $client = new SoapClient ( $servicio , $parametros ) ; $ Parameter ['key'] = "tuclave"; $ client = new SoapClient ($ service, $-Parameter);
  6. -> getNoticias ( $parametros ) ; //llamamos al métdo que nos interesa con los parámetros $ Result = $ client -> getNoticias ($ Parameter) / / Aufruf der metdo, die uns interessiert die Parameter

Mit diesen einfachen Richtlinien haben wir in $ führen das Ergebnis XML-Service-Aufruf. Wie man mit XML arbeiten, ist ein bisschen umständlich, wandeln es in ein assoziatives Array, so dass wir es einfacher, die Daten zu verarbeiten zu machen, nutzen wir die Funktion obj2array ich unten angeben.

  1. $result ) ; $ Result = obj2array ($ result);
  2. [ 'resultado' ] [ 'noticias' ] ; $ News = $ result ['result'] ['news'];
  3. ( $noticias ) ; $ N = Anzahl ($ news);
  4. / / Prozess das Ergebnis wie bei jeder anderen Array
  5. $i = 0 ; $i < $n ; $i ++ ) { for ($ i = 0, $ i <$ n, $ i + +) {
  6. [ $i ] ; $ News = $ news [$ i];
  7. [ 'id' ] ; $ Id = $ news ['id'];
  8. / / Hier gehen Sie den Rest Ihres Codes, verarbeiten Sie die empfangenen Daten
  9. }
  10. $obj ) { obj2array function ($ obj) {
  11. ( ) ; $ Out = array ();
  12. $obj as $key => $val ) { foreach ($ obj as $ key => $ val) {
  13. true ) { Schalter (true) {
  14. ( $val ) : Fall is_object ($ val):
  15. $key ] = obj2array ( $val ) ; $ Out [$ key] = obj2array ($ val);
  16. break;
  17. ( $val ) : Fall is_array ($ val):
  18. $key ] = obj2array ( $val ) ; $ Out [$ key] = obj2array ($ val);
  19. break;
  20. Standard:
  21. $key ] = $val ; $ Out [$ key] = $ val;
  22. }
  23. }
  24. ; return $ out;
  25. }

In der zweiten Zeile halten wir die Array-Elemente, die wir bearbeiten wollen. Wenn Sie nicht wissen, was Ihre Webservice kehrt ein var_dump tun ($ result) und sehen Sie alle Ergebnisse. In unserem Fall, da ist eine Folge von Nachrichten, sind wir mit dem Artikel, dass die Nachricht hat gelassen.

Wie Sie vielleicht bemerkt haben, habe ich nicht besorgt Fehlerbehandlung beim Aufruf des Webservice. Dass ich als Übung, dich zu verlassen, es ist August und ich will nicht icon razz Consumiendo webservices SOAP desde PHP webservice soap PHP . In Handbuch von PHP ist, all die Informationen.

Und dass alle Leute ist, heute war ein einfaches Beispiel, aber sehr nützlich, wenn Sie SOAP verwenden müssen.