suchen
HeimBackend-EntwicklungPHP-TutorialSOAP-Webservice-Schnittstelle

SOAP-Webservice-Schnittstelle

Nov 24, 2016 pm 03:46 PM
soap

In PHP kann SOAP unterstützt werden, nachdem die Erweiterung php_soap.dll in der Datei php.ini aktiviert wurde.
In der Soap-Erweiterungsbibliothek gibt es hauptsächlich drei Arten von Objekten.
1. SoapServer
wird verwendet, um Funktionen zu definieren, die aufgerufen werden können und Antwortdaten zurückgeben, wenn serverseitige PHP-Seiten erstellt werden. Das Syntaxformat zum Erstellen eines SoapServer-Objekts lautet wie folgt:
$soap = new SoapServer($wsdl, $array);
Darunter ist $wsdl die von Shoep verwendete WSDL-Datei und WSDL ist ein Standardformat zur Beschreibung des Webdienstes. Wenn $wsdl auf null gesetzt ist, bedeutet dies, dass der WSDL-Modus nicht verwendet wird. $array sind die Attributinformationen von SoapServer und ein Array.
Die addFunction-Methode des SoapServer-Objekts wird verwendet, um zu deklarieren, welche Funktion vom Client aufgerufen werden kann. Das Syntaxformat ist wie folgt:
$soap->addFunction($function_name);
Darunter: $soap ist ein SoapServer-Objekt. $function_name ist der Name der Funktion, die aufgerufen werden muss.
Die Handle-Methode des SoapServer-Objekts wird verwendet, um Benutzereingaben zu verarbeiten und die entsprechende Funktion aufzurufen, und gibt schließlich das Verarbeitungsergebnis an den Client zurück. Das Syntaxformat lautet wie folgt:
$soap->handle([$soap_request]);
Darunter ist $soap ein SoapServer-Objekt und $soap_request ein optionaler Parameter, der zur Darstellung der Anforderungsinformationen des Benutzers verwendet wird . Wenn $soap_request nicht angegeben ist, bedeutet dies, dass der Server alle Anfragen des Benutzers akzeptiert.
2. SoapCliet
wird verwendet, um die SoapServer-Seite auf dem Remote-Server aufzurufen und den Aufruf der entsprechenden Funktion zu implementieren. Das Syntaxformat zum Erstellen eines SoapClient-Objekts lautet wie folgt:
$soap = new SoapClient($wsdl,$array);
Unter diesen sind die Parameter $wsdl und $array dieselben wie bei SoapServer.
Nach dem Erstellen des SoapClient-Objekts entspricht der Aufruf der Funktion auf der Serverseite dem Aufruf der SoapClient-Methode. Die Erstellungssyntax lautet wie folgt:
$soap->user_function($params);
Darunter , $soap ist ein SoapClient-Objekt, user_function ist die Funktion, die auf der Serverseite aufgerufen werden soll, und $params sind die Parameter, die an die Funktion übergeben werden sollen.
3. SoapFault
SoapFault wird verwendet, um Fehler zu generieren, die beim Soap-Zugriff auftreten können. Das Syntaxformat zum Erstellen eines SoapFault-Objekts lautet wie folgt:
$fault = new SoapFault($faultcode,$faultstring);
Darunter ist $faultcode ein benutzerdefinierter Fehlercode und $faultstring ein Benutzer -definierte Fehlermeldung. Das SoapFault-Objekt wird automatisch generiert, wenn auf der serverseitigen Seite ein Fehler auftritt oder wenn der Benutzer ein SoapFault-Objekt erstellt. Bei Fehlern, die beim Soap-Zugriff auftreten, kann der Client die entsprechenden Fehlerinformationen durch Erfassen des SoapFalut-Objekts erhalten.
Nach der Erfassung des SoapFault-Objekts auf dem Client können der Fehlercode und die Fehlerinformationen über den folgenden Code abgerufen werden:
$fault->faultcode;//Fehlercode
$fault->faultstring; //Fehlerinformationen
Darunter ist $fault das zuvor erstellte SoapFault-Objekt.
Sowohl SoapServer als auch SoapClient erhalten zwei Parameter, die mehrere Optionen unterstützen:
uri: Namespace, erforderlich für Client und Server.
Speicherort. Wird vom Client verwendet, um die Zugriffsadresse des Serverprogramms anzugeben, in diesem Beispiel die Programmadresse des zweiten Codes.
Trace: Wird vom Client verwendet. Wenn „true“, kann der Inhalt der Kommunikation zwischen dem Server und dem Client zum Debuggen abgerufen werden.

Soapserver.php

Java-Code

//Erstellen Sie zunächst eine SoapServer-Objektinstanz und registrieren Sie dann die gewünschten Funktionen Exposé ,

//Das letzte Handle() wird verwendet, um die akzeptierte Soap-Anfrage zu verarbeiten

error_reporting(7); //Bei offizieller Veröffentlichung auf 0 gesetzt

date_default_timezone_set (' PRC'); // Zeitzone einstellen

/* Mehrere Funktionen für Client-Anrufe */

function reverse($str)

{

$retval = '';

if (strlen($str)

return new SoapFault ('Client', '', 'Invalid string'); >

}

for ($i = 1; $i $retval .= $str [(strlen($ str) - $i)];

}

return $retval;

}

function add2numbers($num1, $num2)

{

if (trim($num1) != intval($num1)) {

        return new SoapFault ('Client', '', 'The first number is invalid');  

    }  

    if (trim($num2) != intval($num2)) {  

        return new SoapFault ('Client', '', 'Die zweite Nummer ist ungültig');  

    }  

    return ($num1 + $num2);  

}  

  

function gettime()  

{  

    $time = date('Y-m-d H:i:s', Zeit());  

    return $time;  

}  

  

$soap = new SoapServer (null, array('uri' => "httr://test-rui"));  

$soap->addFunction('reverse');  

$soap->addFunction('add2numbers');  

$soap->addFunction('gettime');  

$soap->addFunction(SOAP_FUNCTIONS_ALL);  

$soap->handle();  

?>  

 SoapClient.php

Java代码  

error_reporting(7);  

versuchen Sie {  

    $client = new SoapClient (null, array('location' => "http://www.yiigo.com/Soapserver.php", 'uri' = >  "http://test-uri"));  

  

    $str = "Diese Zeichenfolge wird umgekehrt";  

    $reversed = $client->reverse($str);  

    echo "Wenn Sie '$str' umkehren, erhalten Sie '$reversed'";  

  

    $n1 = 20;  

    $n2 = 33;  

    $sum = $client->add2numbers($n1, $n2);  

    echo "
";  

    echo "Wenn Sie $n1 + $n2 versuchen, erhalten Sie $sum";  

  

    echo "
";  

    echo "Die remoye-Systemzeit ist: " . $client->gettime();  

} catch (SoapFault $fault) {  

    echo "Fehler! Code:" . $fault->Fehlercode . " Zeichenfolge:". . $fault->faultstring;  

}  

?>  

Wenn Sie „Diese Zeichenfolge wird umgekehrt“ umkehren, erhalten Sie „desrever eb lliw gnirts sihT“
Wenn Sie 20 + 33 versuchen, erhalten Sie 53
Die Remote-Systemzeit ist: 28.05.2012 16:14:29

 

通过SoapHeader实现身份认证

Java代码  

class Server  

{  

    public function auth($a)  

    {  

        if ($a != '123456789') {  

            throw new SoapFault('Server', '用户身份认证信息错误');  

        }  

    }  

  

    public function say()  

    {  

        return 'Hi';  

    }  

}  

  

$srv = new SoapServer(null, array('uri' => 'http://localhost/namespace '));  

$srv->setClass('Server');  

$srv->handle();   

 客户端

Java代码  

$cli = new SoapClient(null,  

array('uri' => 'http://localhost/namespace/',

'location' => 'http://localhost/server.php',

'trace' => true));

//auth ist die vom Server zu verarbeitende Funktion 12345689 ist der Parameter

$h = new SoapHeader(' http://localhost/namespace/',

'auth', '123456789', false, SOAP_ACTOR_NEXT);

$cli->__setSoapHeaders(array($h) );

try {

echo $cli->say(); >getMessage ();

}

Beachten Sie, dass die Serverklasse in server.php eine Methode „auth“ hat, die dem Namen des Headers entspricht Bei der Methode Auth handelt es sich um die Daten von SoapHeader. Wenn SoapServer diese Anfrage empfängt, ruft er zunächst die Auth-Methode auf und übergibt „123456789“ als Parameter an die Methode. Wenn der Parameter „mustUnderstand“ „false“ ist, wird die Methode „say“ auch dann aufgerufen, wenn keine Authentifizierungsmethode vorhanden ist. Wenn er jedoch „true“ ist und die Authentifizierungsmethode nicht vorhanden ist, wird ein Soapfault zurückgegeben, um darüber zu informieren, dass der Header nicht verarbeitet wurde . Der Akteurparameter gibt an, welche Rollen den Header verarbeiten müssen. Ich verstehe ihn hier nicht sehr genau, daher ist es schwer zu sagen.

Java-Code

$file = $this->getSoapWSDL();

$client = new SoapClient($file);//url kann über die zugegriffen werden Browser, kann nicht durch direkten Aufruf gelöst werden

$param = array('userID' => 'test', 'merchantID' => 'test');

$returnSt = $ client-> ;checkUser($param);

print_r($returnSt->checkUserResult>

public function getSoapWSDL()

{ // Die URL-Datei regelmäßig lokal speichern

DS 'shengda' if (time() > filemtime($file) + 7 * 86400) {

$url = "http://jf.sdo.com/ExchangeScore/ExchangeService.asmx?WSDL";

include_once(BP . DS . "lib/Snoopy.class.php");

$snoopy = new Snoopy;

$snoopy->fetch($url); / Alle Inhalte abrufen

$snoopy->read_timeout = 4;

$wsdl = $snoopy->results;

if ($snoopy-& gt;status == '200' && !$snoopy->timed_out) {

if (!is_dir(dirname($file))) {

mkdir(dirname($file)); 🎜>.

                                                                              $file;

}

Stellungnahme
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
Was sind die Vorteile der Verwendung einer Datenbank zum Speichern von Sitzungen?Was sind die Vorteile der Verwendung einer Datenbank zum Speichern von Sitzungen?Apr 24, 2025 am 12:16 AM

Die Hauptvorteile der Verwendung von Datenbankspeichersitzungen sind Persistenz, Skalierbarkeit und Sicherheit. 1. Persistenz: Auch wenn der Server neu gestartet wird, können die Sitzungsdaten unverändert bleiben. 2. Skalierbarkeit: Anwendbar für verteilte Systeme, um sicherzustellen, dass Sitzungsdaten zwischen mehreren Servern synchronisiert werden. 3. Sicherheit: Die Datenbank bietet verschlüsselten Speicher zum Schutz vertraulicher Informationen.

Wie implementieren Sie eine benutzerdefinierte Sitzung in PHP?Wie implementieren Sie eine benutzerdefinierte Sitzung in PHP?Apr 24, 2025 am 12:16 AM

Das Implementieren der benutzerdefinierten Sitzung in PHP kann durch die Implementierung der SessionHandlerInterface -Schnittstelle durchgeführt werden. Die spezifischen Schritte umfassen: 1) Erstellen einer Klasse, die SessionHandlerInterface wie CustomSessionHandler implementiert; 2) Umschreiben von Methoden in der Schnittstelle (z. B. offen, schließen, lesen, schreiben, zerstören, GC), um die Lebenszyklus- und Speichermethode von Sitzungsdaten zu definieren; 3) Registrieren Sie einen benutzerdefinierten Sitzungsprozessor in einem PHP -Skript und starten Sie die Sitzung. Auf diese Weise können Daten in Medien wie MySQL und Redis gespeichert werden, um Leistung, Sicherheit und Skalierbarkeit zu verbessern.

Was ist eine Sitzungs -ID?Was ist eine Sitzungs -ID?Apr 24, 2025 am 12:13 AM

SessionID ist ein Mechanismus, der in Webanwendungen verwendet wird, um den Benutzersitzstatus zu verfolgen. 1. Es handelt sich um eine zufällig generierte Zeichenfolge, mit der die Identitätsinformationen des Benutzers während mehrerer Interaktionen zwischen dem Benutzer und dem Server aufrechterhalten werden. 2. Der Server generiert und sendet ihn über Cookies- oder URL -Parameter an den Client, um diese Anforderungen in mehreren Anforderungen des Benutzers zu identifizieren und zu verknüpfen. 3. Die Erzeugung verwendet normalerweise zufällige Algorithmen, um Einzigartigkeit und Unvorhersehbarkeit zu gewährleisten. 4. In der tatsächlichen Entwicklung können In-Memory-Datenbanken wie Redis verwendet werden, um Sitzungsdaten zu speichern, um die Leistung und Sicherheit zu verbessern.

Wie gehen Sie mit Sitzungen in einer staatenlosen Umgebung (z. B. API) um?Wie gehen Sie mit Sitzungen in einer staatenlosen Umgebung (z. B. API) um?Apr 24, 2025 am 12:12 AM

Das Verwalten von Sitzungen in staatenlosen Umgebungen wie APIs kann durch Verwendung von JWT oder Cookies erreicht werden. 1. JWT ist für Staatenlosigkeit und Skalierbarkeit geeignet, aber es ist groß, wenn es um Big Data geht. 2. Kookies sind traditioneller und einfacher zu implementieren, müssen jedoch mit Vorsicht konfiguriert werden, um die Sicherheit zu gewährleisten.

Wie können Sie vor SPRECTS-Angriffen (XSS) schützen?Wie können Sie vor SPRECTS-Angriffen (XSS) schützen?Apr 23, 2025 am 12:16 AM

Um die Anwendung vor Sitzungsangriffen im Zusammenhang mit den Sitzungen zu schützen, sind folgende Maßnahmen erforderlich: 1. Stellen Sie die HTTPonly- und sicheren Flags ein, um die Sitzungs Cookies zu schützen. 2. Exportcodes für alle Benutzereingaben. 3. Implementieren Sie die Inhaltssicherheitsrichtlinie (CSP), um die Skriptquellen einzuschränken. Durch diese Richtlinien können Sitzungsangriffe im Zusammenhang mit Sitzungen effektiv geschützt und Benutzerdaten sichergestellt werden.

Wie können Sie die PHP -Sitzungsleistung optimieren?Wie können Sie die PHP -Sitzungsleistung optimieren?Apr 23, 2025 am 12:13 AM

Methoden zur Optimierung der PHP -Sitzungsleistung gehören: 1. Start der Verzögerung der Sitzung, 2. Verwenden Sie Datenbank zum Speichern von Sitzungen, 3. Kompress -Sitzungsdaten, 14. Sitzungslebenszyklus verwalten und 5. Sitzungsfreigabe implementieren. Diese Strategien können die Effizienz von Anwendungen in hohen Parallelitätsumgebungen erheblich verbessern.

Wie lautet die Konfigurationseinstellung von Session.gc_maxlifetime?Wie lautet die Konfigurationseinstellung von Session.gc_maxlifetime?Apr 23, 2025 am 12:10 AM

Thesession.gc_maxlifetimesettingInphpdeterminesthelifspanofSessionData, setInseconds.1) ItsconfiguredInphp.iniorviaini_Set (). 2) AbalanceIsneedToAvoidPerformanceSandunexexwortedyg -Probablogouts

Wie konfigurieren Sie den Sitzungsnamen in PHP?Wie konfigurieren Sie den Sitzungsnamen in PHP?Apr 23, 2025 am 12:08 AM

In PHP können Sie die Funktion Session_name () verwenden, um den Sitzungsnamen zu konfigurieren. Die spezifischen Schritte sind wie folgt: 1. Verwenden Sie die Funktion Session_name (), um den Sitzungsnamen wie Session_name ("my_Session") festzulegen. 2. Nachdem Sie den Sitzungsnamen festgelegt haben, call Session_start (), um die Sitzung zu starten. Das Konfigurieren von Sitzungsnamen kann Sitzungsdatenkonflikte zwischen mehreren Anwendungen vermeiden und die Sicherheit verbessern, aber auf die Einzigartigkeit, Sicherheit, Länge und Festlegen des Zeitpunkts der Sitzungsnamen achten.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),