PHP SOAP Server mit WSDL und API Schlüssel

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PHP SOAP Server mit WSDL und API Schlüssel

    Hallo Leute

    habe mir aus dem Artikel [wiki]PHP SOAP Server mit WSDL und API Schlüssel[/wiki] die entsprechenden Dateien heruntergeladen und einen Webservice zum Laufen gebracht. Es sind zwei Funktionen "getFoo" und "setFoo" vorbereitet, die ich mit einfachen Rechenoperationen bestückt habe. Vom client kann ich diese auch gut aufrufen und das klappt soweit. Nun das große
    Problem: Füge ich eine neue Funktion im Service und im Client hinzu gibt es eine Fehlermeldung, ebenso, wenn ich den Namen der Funktion ändere. habe hier z. B. getFoo in gtFoo geändert (im Service und im Client) und es kommt folgende Meldung

    Fatal error: Uncaught SoapFault exception: [Client] Function ("gtFoo") is not a valid method for this service in C:\xampp\htdocs\phpbeispiele\Webservices\SOAP\client.php:33 Stack trace: #0 C:\xampp\htdocs\phpbeispiele\Webservices\SOAP\client.php(33): SoapClient->__call('gtFoo', Array) #1 C:\xampp\htdocs\phpbeispiele\Webservices\SOAP\client.php(33): SoapClient->gtFoo(20, 10) #2 {main} thrown in C:\xampp\htdocs\phpbeispiele\Webservices\SOAP\client.php on line 33

    der Code sieht auszugsweise wie folgt aus:
    Client:
    echo "Neuer Anlauf";
    $erg= $client->gtFoo(20,10);
    echo "20 + 19 =".$erg;
    echo "<br>";

    $erg= $client-> setFoo(600, 400, 200, 600);
    echo "(600 + 400 + 200 +600) / 4 =".$erg;
    echo "<br>";
    echo $erg;


    und im Service:
    public function gtFoo($param1, $param2) {
    if ($param1 != null && $param2 != null && trim($param1) != '' && trim($param2) != '') {
    return $param1 + $param2;
    } else {}
    }
    /**
    * sets foo
    */
    public function setFoo($param1, $param2, $param3, $param4) {
    return ($param1 + $param2 + $param3 + $param4)/4;
    }


    Ändere ich die beiden Stellen auf getFoo, dann funktioniert es. Insbesondere tritt das gleiche Problem auf, wenn ich neue Funktionen hinzufügen möchte. Habe alles unter PHP 5.3 umgesetzt

    Hat jemand dazu einen Tipp

    Vielen Dank

    Michael Z.
  • Hi Torben,

    die zweite Variable muss doch $wsdl lauten oder?

    Ich habe folgende Angaben gemacht:

    Quellcode

    1. $uri = 'localhost.de';
    2. $wsdl = 'http://localhost/phpbeispiele/Webservices/SOAP/server.php?wsdl';
    3. $location = 'http://localhost/phpbeispiele/Webservices/SOAP/server.php';
    4. // Set the login headers
    5. $wsu = 'http://schemas.xmlsoap.org/ws/2002/07/utility';
    6. $usernameToken = new SoapHeaderAPIToken('hello');
    7. $soapHeaders[] = new SoapHeader($wsu, 'APIToken', $usernameToken);
    8. $client = new SoapClient($wsdl, array( "location" => $location,"uri" => $uri));
    9. $client->__setSoapHeaders($soapHeaders);
    Alles anzeigen


    Jetzt kann ich das auf gtFoo ändern, aber das Hinzufügen von Funktionen klappt immer noch nicht. Kann es vielleicht ein Cache Problem sein???

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von mzilker ()

  • Hi

    habs jetzt glaube ich gelöst ---> es handelt sich vermutlich um ein "Cacheproblem" ! Schalte ich das SOAP Caching in der PHP.INI ab, dann gehts astrein.

    in php.ini

    Quellcode

    1. [soap]
    2. ; Enables or disables WSDL caching feature.
    3. ; http://php.net/soap.wsdl-cache-enabled
    4. soap.wsdl_cache_enabled=0


    Gruß


    Michael Z.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von mzilker ()