1. Grundkonzepte
SOAP (Simple Object Access Protocol) ist ein einfaches Protokoll zum Austausch von Informationen in einer dezentralen oder verteilten Umgebung. Es ist ein XML-basiertes Protokoll und besteht aus vier Teilen: SOAP envelop (Umschlag), Kapselung Definiert ein Framework, das beschreibt, was In der Nachricht steht, wer sie gesendet hat, wer sie akzeptieren und verarbeiten soll und wie sie verarbeitet werden soll. Die SOAP-Kodierungsregeln werden verwendet, um Instanzen der Datentypen darzustellen, die die Anwendung verwenden muss das Protokoll für Remote-Prozeduraufrufe und -Antworten; die SOAP-Bindung verwendet das zugrunde liegende Protokoll zum Austausch von Informationen.
WSDL (Web Service Description Language) ist das Standard-XML-Format zur Beschreibung von XML-Webdiensten. WSDL wurde von Entwicklern wie Ariba, Intel, IBM und Microsoft vorgeschlagen. Es definiert die relevanten Vorgänge und Nachrichten, die von einem bestimmten Webdienst gesendet und empfangen werden, auf abstrakte Weise, unabhängig von bestimmten Sprachen. Per Definition kann man sich WSDL noch nicht als Objektschnittstellen-Definitionssprache vorstellen. Anwendungsarchitekturen wie CORBA oder COM verwenden beispielsweise Objektschnittstellen-Definitionssprachen. WSDL bleibt protokollneutral, verfügt jedoch über eine integrierte Unterstützung für die Bindung an SOAP und stellt so eine untrennbare Verbindung mit SOAP her. Wenn ich in diesem Artikel WSDL bespreche, gehe ich davon aus, dass Sie SOAP als Kommunikationsprotokoll verwenden.
Obwohl SOAP und WSDL zwei wichtige Standards für Webdienste sind, sind sie nicht unbedingt miteinander verbunden und können unabhängig voneinander verwendet werden. Die Beziehung zwischen ihnen ähnelt der Beziehung zwischen HTTP und HTML. Ersteres ist ein Protokoll und letzteres ist eine Beschreibung eines Webservers.
2. Konfiguration unter PHP5
Suchen Sie in der PHP-Konfigurationsdatei php.ini nach
extension=php_soap.dll
Entfernen Sie dann das „;“-Zeichen vorne und starten Sie den Webdienst neu
3. Fragen Sie Webdienstmethoden, Parameter und Datentypen ab
Die Auftragseingabeschnittstelle eines Telekommunikationsunternehmens in der Provinz ist http://***.******.com/services/AcceptedBusiness?wsdl
Wir verwenden die Methodenansicht __geunctions() und __getTypes() von SoapClient die Methoden, Parameter und Datentypen der Schnittstelle
Nur die in __getFunctions aufgeführten Schnittstellen können von Soap aufgerufen werden.
Erstellen Sie den Code Soap.php im Stammverzeichnis
<?php header("content-type:text/html;charset=utf-8"); try { $client = new SoapClient("http://***.******.com/services/AcceptedBusiness?wsdl"); print_r($client->__getFunctions()); print_r($client->__getTypes()); } catch (SOAPFault $e) { print $e; } ?>
Nach dem Ausführen von http://localhost/soap.php im Browser lautet das Rückgabeergebnis wie folgt
Array ( [0] => ArrayOf_xsd_anyType introduceAcceptedBusiness(string $c3, string $c4, string $linkman, string $linknum, string $num, string $idcard, string $remark, string $address) [1] => ArrayOf_xsd_anyType introduceAcceptedBusinessByAiZhuangWei(string $subname, string $linkphone, string $idcard, string $address, string $businesstype, string $marketcode, string $surveycode, string $commanager, string $commanagerphone, string $bendiwang, string $fenju, string $zhiju, string $remark) [2] => string introduceAcceptedBusinessByStandardInterface(string $xmlStr) [3] => string introduceAcceptedBusinessByCallOut(string $xmlStr) [4] => string introduceAcceptedBusinessByYddj(string $xmlParam) [5] => ArrayOf_xsd_anyType queryAcceptedBusinessByAiZhuangWei(string $surveycode, string $starttime, string $endtime) [6] => string queryCallOutOrderByConfig(string $xmlParam) ) Array ( [0] => anyType ArrayOf_xsd_anyType[] )
Es gibt eine Methode „introductAcceptedBusinessByStandardInterface(string $xmlStr), die die im Entwicklungsdokument erwähnte zu verwendende Schnittstelle sein wird, und der Parameter ist eine XML-Zeichenfolge
Darüber hinaus erwähnen einige Schnittstellen die SoapHeader-Authentifizierung, die das Hinzufügen der __setSoapHeaders-Methode erfordert. Weitere Informationen finden Sie unter http://php.net/manual/zh/soapclient.setsoapheaders.php
4. Bestellung absenden
In diesem Schritt wird die XML-Zeichenfolge gemäß dem Entwicklungsdokument gespleißt und dann als Parameter von „introductAcceptedBusinessByStandardInterface“ übergeben
, um „acceptedbusiness.php“ mit dem folgenden Inhalt zu erstellen
<?php header("content-type:text/html;charset=utf-8"); try { $client = new SoapClient('http://***.*******.com/services/AcceptedBusiness?wsdl'); $xml = " <?xml version='1.0' encoding='UTF-8' ?> <PACKAGE> <C3>**电信</C3> <C4></C4> <LINKMAN>张三</LINKMAN> <LINKNUM>13412341234</LINKNUM> <LINKADDRESS>广东深圳</LINKADDRESS> <REMARK>iPhone 6</REMARK> <CHANNEL></CHANNEL> <GRIDCODE>1111111111111111111111111111111</GRIDCODE> <AGENTCODE>2111</AGENTCODE> <KEY>1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111</KEY> </PACKAGE> "; $return = $client->introduceAcceptedBusinessByStandardInterface($xml); print_r($return); } catch (SOAPFault $e) { print_r('Exception:'.$e); } ?>
Nach der Ausführung im Browser geben Sie
zurück
<?xml version="1.0" encoding="UTF-8"?> <PACKAGE> <STATUS>0</STATUS> <REASON>入单成功!</REASON> <ORDERSEQ>2014100905523549742</ORDERSEQ> </PACKAGE>
Referenz: http://www.cnblogs.com/txw1958/p/php5-soap-wsdl.html
Das Obige stellt den Implementierungsprozess von WSDL- und SOAP-Aufrufen unter PHP5 vor, einschließlich verschiedener Aspekte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.