SOAP Fehlermeldung Procedure “sayHallo” is not present

Momentan arbeite ich an einer Schnittstelle zwischen PHP und C++. Genauer gesagt geht es um einen C++ Clienten und einen in PHP geschriebenen Server.

Wie so üblich werden erstmal ein paar Testversionen geschrieben, um die Kommunikation zwischen dem Clienten und dem Server zu testen.

Die erste Funktion sollte nur 2 Zahlen addieren und das Ergebnis zurückgeben.

Das hatte bestens geklappt. Ok, dachte ich, jetzt ein Test mit Strings.

Die Server.php wurde um eine einfache Test-Funktion (sayHallo) erweitert.

Auch in der Wsdl Datei wurde diese neue Funktion beschrieben.

Der Client konnte zwar problemlos die Zahlen addieren, beim Aufruf der Funktion “sayHallo” kam die Fehlermeldung

Procedure “sayHallo” is not present.

Eine nicht allzu aussagende Fehlermeldung.

Lag es an der server.php, an der wsdl oder am Clienten?

Um es kurz zu machen, es lag am Soap wsdl Cache.

Wer an einem Webservice arbeitet, muss den Cache deaktivieren.

So geht es:

ini_set("soap.wsdl_cache_enabled", "0");

Die Server.php sieht mit ausgeschalteten Cache so aus:

<?php 
function add($a, $b) { 
  return $a + $b; 
} 
 
function sayHallo($name)	{ 
 
return 'Hallo ' . $name; 
 
}
 
ini_set("soap.wsdl_cache_enabled", "0");
$server = new SoapServer("test.wsdl"); 
$server->addFunction("add");
$server->addFunction("sayHallo");
$server->handle(); 
?>

Vielleicht hilft es den einen oder anderen bei der Suche nach der ominösen Fehlermeldung ;) Man kann da sehr viel Zeit verplempern^^.

You can leave a response, or trackback from your own site.

2 Responses to “SOAP Fehlermeldung Procedure “sayHallo” is not present”

  1. Christian sagt:

    Danke für die Hilfe … das war auch mein Problem … hatte nur bei dem Client den Cache ausgeschaltet

  2. Markus sagt:

    Hallo … vielen Dank für diesen Betrag … nach 2 Tagen verzweifelter Suche endlich die Lösung !

    Markus

Leave a Reply

You must be logged in to post a comment.