Frage

Gibt es ein Tool für PHP, mit dem Code zum Konsumieren von a generiert werden kann? Internetservice basierend auf seiner WSDL?Etwas vergleichbar mit dem Klicken auf „Webverweis hinzufügen“ in Visual Studio oder dem Eclipse-Plugin, das dasselbe für Java bewirkt.

War es hilfreich?

Lösung

Ich hatte großen Erfolg damit wsdl2php.Es erstellt automatisch Wrapper-Klassen für alle in Ihrem Webdienst verwendeten Objekte und Methoden.

Andere Tipps

In PHP 5 können Sie verwenden SoapClient auf der WSDL, um die Webdienstfunktionen aufzurufen. Zum Beispiel:

$client = new SoapClient("some.wsdl");

und $client ist jetzt ein Objekt, das über Klassenmethoden verfügt, wie in some.wsdl definiert.Wenn es also eine Methode namens getTime in der WSDL gäbe, würden Sie einfach Folgendes aufrufen:

$result = $client->getTime();

Und das Ergebnis davon wäre (natürlich) in der Variablen $result.Sie können die Methode __getFunctions verwenden, um eine Liste aller verfügbaren Methoden zurückzugeben.

Ich habe benutzt NuSOAP in der Vergangenheit.Mir hat es gefallen, weil es nur eine Reihe von PHP-Dateien ist, die man einbinden kann.Auf dem Webserver muss nichts installiert und keine Konfigurationsoptionen geändert werden.Es bietet auch WSDL-Unterstützung, was ein Bonus ist.

Das Artikel erklärt, wie Sie mit PHP SoapClient einen API-Webdienst aufrufen können.

Nun, diese Funktionen sind spezifisch für ein Tool, das Sie für die Entwicklung in diesen Sprachen verwenden.

Sie hätten diese Tools nicht, wenn Sie beispielsweise Notepad zum Schreiben von Code verwenden würden.Vielleicht sollten Sie die Frage also nach dem Tool stellen, das Sie verwenden.

Für PHP: http://webservices.xml.com/pub/a/ws/2004/03/24/phpws.html

Hallo, ich habe das von dieser Seite bekommen: http://forums.asp.net/t/887892.aspx?Consume+an+ASP+NET+Web+Service+with+PHP

Der Webdienst hat eine Methode Add was zwei Parameter benötigt:

<?php
    $client = new SoapClient("http://localhost/csharp/web_service.asmx?wsdl");

     print_r( $client->Add(array("a" => "5", "b" =>"2")));
?>

Angenommen, Ihnen wurde Folgendes zur Verfügung gestellt:

<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:int="http://thesite.com/">
    <x:Header/>
    <x:Body>
        <int:authenticateLogin>
            <int:LoginId>12345</int:LoginId>
        </int:authenticateLogin>
    </x:Body>
</x:Envelope>

Und

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <authenticateLoginResponse xmlns="http://thesite.com/">
            <authenticateLoginResult>
                <RequestStatus>true</RequestStatus>
                <UserName>003p0000006XKX3AAO</UserName>
                <BearerToken>Abcdef1234567890</BearerToken>
            </authenticateLoginResult>
        </authenticateLoginResponse>
    </s:Body>
</s:Envelope>

Nehmen wir an, dass der Zugriff erfolgt http://thesite.com/ sagte, dass die WSDL-Adresse lautet:http://thesite.com/PortalIntegratorService.svc?wsdl

$client = new SoapClient('http://thesite.com/PortalIntegratorService.svc?wsdl');
$result = $client->authenticateLogin(array('LoginId' => 12345));
if (!empty($result->authenticateLoginResult->RequestStatus)
    && !empty($result->authenticateLoginResult->UserName)) {
    echo 'The username is: '.$result->authenticateLoginResult->UserName;
}

Wie Sie sehen können, werden die im XML angegebenen Elemente im PHP-Code verwendet, obwohl der LoginId-Wert geändert werden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top