Heim > Backend-Entwicklung > PHP-Tutorial > Webservice – nusoap detaillierte Erklärung

Webservice – nusoap detaillierte Erklärung

WBOY
Freigeben: 2016-07-30 13:30:12
Original
1514 Leute haben es durchsucht

PHP SOAP Server

Es ist sehr einfach, einen SOAP-Server mit PHP und NuSoap einzurichten. Im Grunde schreiben Sie einfach die Funktionen, die Sie Ihren Webdiensten zur Verfügung stellen möchten, und registrieren sie bei NuSoap. OK, es sind noch zwei weitere Schritte erforderlich, um die Einrichtung des PHP-SOAP-Servers abzuschließen. Zuerst müssen Sie eine Instanz des NuSoap-Objekts in Ihrem PHP-Code erstellen und dann die HTTP-POST-Methode verwenden, um die Originaldaten zur Verarbeitung an NuSoap zu übergeben

Die Verwendung von NuSOAP ist relativ einfach, und die am häufigsten verwendeten Klassen sind Soap_Server und SoapClient, , wobei Soap_Server zum Erstellen von Webservice-Diensten und die Klasse SoapClient zum Aufrufen von Webservice verwendet werden Die Definitionen dieser beiden Klassen befinden sich in lib/nusoap.php, daher müssen wir beim Erstellen oder Aufrufen des Webservice-Schnittstellenprogramms auf diese Datei verweisen.

NuSoap ist ein WebService-Programmiertool in der PHP-Umgebung WebService erstellen oder aufrufen. Es handelt sich um eine Open-Source-Software, bei der es sich um eine Reihe von PHP-Klassen handelt, die vollständig in PHP-Sprache geschrieben sind und SOAP-Nachrichten über HTTP senden und empfangen. Sie wurde von der NuSphere Corporation (http://dietrich.ganx4.com/nusoap/) entwickelt. Ein Vorteil von NuSOAP besteht darin, dass keine Unterstützung für Erweiterungsbibliotheken erforderlich ist. Diese Funktion ermöglicht die Verwendung von NuSoap in allen PHP-Umgebungen und wird nicht von den Sicherheitseinstellungen des Servers beeinflusst.

1.Gehen Sie zunächst zu http://sourceforge.net/projects/nusoap / Laden Sie nusoap.zip herunter.
2.
Server: Erstellen Sie die Datei nusoapService.php.

[php] Klartext anzeigen

  1. require_once ("lib /nusoap.php"); Soap_server ();
  2. // Verstümmelte Zeichen vermeiden $server->soap_defencoding = 'UTF-8'
  3. ; >$server->decode_utf8 = false; 🎜>// WSDL-Unterstützung öffnen
  4. / * Registrieren Sie ein Programm, auf das der Client zugreifen muss
  5. Geben Sie den entsprechenden Wert ein: bool ->"xsd:boolean" string->"xsd: string"
  6. int->"xsd:int" float->"xsd :float" */
  7. $server->register ( 'GetTestStr', // Methodenname
  8. Array (
  9. "name" => "xsd:string"
  10. ), // Parameter, Der Standardwert ist „xsd:string“
  11. Array
  12. ("return" => "xsd:string"
  13. ) // Rückgabewert, Standard ist "xsd:string" //isset Überprüfen Sie, ob die Variable gesetzt ist
  14. $HTTP_RAW_POST_DATA = isset ( $HTTP_RAW_POST_DATA ) ? $HTTP_RAW_P OST_DATA : '';
  15. //service Verarbeitet die vom Kunden eingegebenen Daten $server->service ( $HTTP_RAW_POST_DATA ); 🎜>Funktion GetTestStr(
  16. $name) {
  17.  
  18. return „Hallo, { $name } !“; } ?>
  19. 3.
  20. Client: Erstellen Sie
  21. nusoapClient.php Datei.
  22. [php] Klartext anzeigen
    1. require_once ("lib /nusoap.php");
    2. /* >WebService über WSDL aufrufen
    3. Parameter 1 Die Adresse der WSDL-Datei (die WSDL nach dem Fragezeichen darf nicht großgeschrieben werden)
    4. Parameter 2 gibt an, ob um WSDL zu verwenden
    5. $client = new Soapclient('http://localhost/nusoapService.php?wsdl', true);
    6. */
    7. $client
    8. =
    9. neuer Soapclient ( 'http://localhost/nusoapService.php' ); 🎜>$client->soap_defencoding = 'UTF-8';
    10. $client->decode_utf8 = false;
    11. $client->xml_encoding = 'UTF-8';
    12. //Die Parameter werden in Array-Form übergeben
    13. $paras = array (
    14. 'name' => 'Bruce Lee' ); >// Wenn die Zielmethode keine Parameter hat, können die folgenden Parameter weggelassen werden $result =
    15. $client
    16. -> call ( 'GetTestStr',
    17. $paras
    18. ) ; 🎜>// Auf Fehler prüfen und den Rückgabewert erhalten if (! $err = $client
    19. ->getError ()) {
    20.   echo
    21. " Rückgabeergebnisse: ", $result; } else
    22. { echo
    23. " Aufruffehler: ", $err ;
    24. ?> 
    25. [php] Klartext anzeigen
      1. require_once ("lib /nusoap.php");
      2. /* >WebService über WSDL aufrufen
      3. Parameter 1 Die Adresse der WSDL-Datei (die WSDL nach dem Fragezeichen darf nicht großgeschrieben werden)
      4. Parameter 2 gibt an, ob um WSDL zu verwenden
      5. $client = new Soapclient('http://localhost/nusoapService.php?wsdl', true);
      6. */
      7. $client
      8. =
      9. neu Soapclient ( 'http://localhost/nusoapService.php?wsdl',true); $client
      10. ->soap_defencoding =
      11. 'UTF-8'; 🎜>$client->decode_utf8 = false;
      12. $client- >xml_encoding = 'UTF-8'
      13. ;
      14. / / Parameter werden in Array-Form übergeben
      15. $paras = array
      16. (
      17. 'name' => 'Bruce Lee' ); / Wenn die Zielmethode keine Parameter hat, können die folgenden Parameter weggelassen werden $client -> call (
      18. 'GetTestStr'
      19. , $paras );
      20. $document = $client->document;
      21. echo
      22. $document;
      23. Hinweis:
      24. Zurück Ergebnis: Hallo, { Bruce Lee } ! WSDLWSDL ist eine XML-Sprache, die zur Beschreibung von Webdiensten verwendet wird. Es handelt sich um ein maschinenlesbares Format, das dem Webdienst-Client alle für den Zugriff auf den Dienst erforderlichen Informationen bereitstellt. NuSOAP bietet speziell eine Klasse zum Parsen von WDSL-Dateien und zum Extrahieren von Informationen daraus. Das Soapclient-Objekt verwendet die WSDL-Klasse, um Entwicklern das Aufrufen von Diensten zu erleichtern. Durch die Erstellung der Nachricht mithilfe von WSDL-Informationen muss der Programmierer lediglich den Namen und die Parameter der Operation kennen, um sie aufzurufen. Die Verwendung von WSDL über NuSOAP bietet die folgenden Vorteile: Alle Dienstmetadateien wie Namespaces, Endpunkt-URLs, Parameternamen usw. können direkt aus der WSDL-Datei abgerufen werden, sodass sich der Client dynamisch anpassen kann serverseitige Änderungen. Da diese Daten immer vom Server verfügbar sind, müssen sie nicht mehr in Benutzerskripten fest codiert werden. Es ermöglicht uns die Verwendung der Soap_proxy-Klasse. Diese Klasse ist von der Soapclient-Klasse abgeleitet und fügt Methoden hinzu, die den in der WDSL-Datei beschriebenen Vorgängen entsprechen. Jetzt können Benutzer diese Methoden direkt aufrufen.
      25. Die Soapclient-Klasse enthält eine getProxy()-Methode , die ein Objekt der Soap_proxy-Klasse zurückgibt. Die Klasse „soap_proxy“ ist von der Klasse „soapclient“ abgeleitet, fügt Methoden hinzu, die den im WSDL-Dokument definierten Vorgängen entsprechen, und ermöglicht dem Benutzer den Aufruf der Remote-Methode eines Endpunkts. Dies gilt nur, wenn das Soapclient-Objekt mit einer WDSL-Datei initialisiert wird. Der Vorteil liegt in der Benutzerfreundlichkeit, der Nachteil in der Leistung – das Erstellen von Objekten in PHP ist zeitaufwändig – und dient keinem nützlichen Zweck (und dieser Funktionalität). dient keinem nützlichen Zweck).


      [php ] Klartext anzeigen

      1. require_once ("lib /nusoap.php"); Soapclient (
      2. 'http://localhost/nusoapService.php?wsdl'
      3. ,true); $client->soap_defencoding = 'UTF-8'; 🎜>
      4. $client->decode_utf8 = false; 'UTF-8'; //Proxy-Klasse generieren
      5. $proxy =
      6. $client->getProxy(); >//Remotefunktion aufrufen
      7. $sq = $proxy
      8. ->GetTestStr(
      9. 'Bruce Lee'); if (!$err=
      10. $proxy->getError()) { 
      11. print_r(
      12. $sq); 🎜> print "ERROR: $err"
      13.  print 'REQUEST:<xmp>'.$p
      14. ->request.
      15. '</xmp>'; 'ANTWORT:<xmp>'.
      16. str_replace( '><',
      17. ">n<", $p->response ).
      18. '</xmp> '
      19. ?> :http://localhost/
      20. nusoapService.php generierte WSDL-Datei
      21. Klicken Sie auf den Methodennamen. Auf diese Weise stellen wir durch das Hinzufügen einiger Codezeilen zum Dienst mithilfe von NuSOAP ein visuelles Dokument für den Dienst bereit. Aber das ist nicht alles, was wir tun können. Wir sind hier: Durch die Verwendung von NuSOAP zum Hinzufügen einiger WSDL-Aufrufe zum Dienst können wir WSDL und andere Dokumente für den Dienst generieren. Im Gegensatz dazu können wir im Client nicht viel tun, zumindest in unserem einfachen Beispiel. Der unten gezeigte Client unterscheidet sich nicht von dem Client, der kein WSDL verwendet. Der einzige Unterschied besteht darin, dass das Parsen der Soapclent-Klasse durch die Bereitstellung der URL des WSDL statt des Dienstendpunkts wie zuvor erfolgt. Lösung für verstümmelten Code, wenn NuSoap WebService aufruft: [php] Klartext anzeigen$client->soap_defencoding = 'utf-8'$client->decode_utf8 = false; 
      22. $client

      ->xml_encoding =
      'utf-8'; >

      Der Dateicode kann nicht keine Ausgabe haben, Andernfalls wird beim Aufruf ein Fehler ähnlich dem folgenden gemeldet:

      XML-Fehler beim Parsen der SOAP-Nutzlast in Zeile x(Zeilennummer

      ): Reservierter XML-Name

      Webservice – nusoap detaillierte ErklärungVerwenden Sie

      nusoap

      , um

      WebService zu implementieren,

      Aktivieren Sie

      php
        s
      1. SOAP-Erweiterung, wegen der SoapClient-Klasse von nusoap und php5 Es gibt einen Konflikt mit der integrierten in der SOAP-Klasse. Lösung1. Ändern Sie php.ini so, dass die integrierte Soap-Erweiterung von php5 (php_soap.dll unter Windows) nicht geladen wird.
      2. 2. Einige haben auch die SoapClient-Klasse von nusoap umbenannt. Identitätsauthentifizierung
      [php] Klartext anzeigen

      1. header('content-type: text/xml; charset=UTF-8 ');  
      2. require_once('nusoap.php');  
      3. $params = array('AuthenticationHeader'  =>  array(  
      4.     'Content-Type' =>  'text/xml;  charset=UTF-8',  
      5.     'SOAPAction'  =>  'YourFunstion',  
      6. )  
      7. );  
      8. $client = neu nusoap_client('http:// www.yourdomain.com/service.asmx?wsdl', true, '''''''');  
      9. $client->setHeaders('    
      10. "http://tempuri.org/webservice">  
    26.   username< ;/tns:Benutzername>    
    27.   password     
    28. ');  
    29. $err
    30.  = $client->getError();  if
    31.  ($err) {      echo
    32.  '

      Konstruktorfehler

      '</span><span> . </span><span>$err</span><span> . </span><span>'
      '
      ;  }  
    33. $result
    34.  = $client->call('YourFunction'$params'''', false, true);  if
    35.  ($client->fault) {      echo
    36.  '

      Fault

      '</span><span>;  </span><span></span><span></span>    print_r(</span>$result</li>
      <li>);  <span><span></span><span></span>    </span>echo</li>
      <li> <span><span>'
      '
      ;  
      else
    37.  {      $err
    38.  = $client->getError();      if
    39.  ($err) {          echo
    40.  '

      Error

      '</span><span> . </span><span>$err</span><span> . </span><span>'
      '
      ;      } 
      else
    41.  {          echo
    42.  '

      Ergebnis

      '</span><span>;  </span><span></span><span></span></span>//print_r($result);</li>
      <li>  <span><span></span><span></span>        </span> echo</li>
      <li> <span><span>'
      '
      ;      }  
    43. }
    44. echo '

      Request

      '</span><span> . htmlspecialchars(</span><span>$client</span><span>->request, ENT_QUOTES) </span><span>'
      '
      ;
    45. echo '

      Response

      '</span><span> .htmlspecialchars(</span><span>$client</span><span>->response, ENT_QUOTES) </span><span>'
      '
      ;
    46. Das Obige stellt die ausführliche Erklärung von webservice-nusoap vor, einschließlich seiner Aspekte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage