PHP SOAP Server mit WSDL und API Schlüssel

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • 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:

    Source Code

    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);
    Display All


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

    The post was edited 1 time, last by 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

    Source Code

    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.

    The post was edited 1 time, last by mzilker ().