PHP-SOAP-Prozedur 'functionName' nicht vorhanden

Schreibe ich ein SOAP-Anwendung in Symfony und für all meine Anfrage ich bin immer ein Fehler Procedure 'getClusterName' not present.

Merkwürdige ist, dass wenn ich eine test-SOAP-Anwendung in reines PHP, es funktioniert gut, aber den gleichen code in Symfony gibt einen Fehler zurück.

Andere seltsame Sache ist, dass, wenn der SOAP-server code habe ich eine Liste der verfügbaren service-Funktionen mit $server->getFunctions() es gibt array mit den service-Funktionen und getClusterName ist in diesem array. Also die Funktion ist bekannt auf dem server, aber kann es es nicht nennen.

Beim schreiben der service in Symfony ich folgte dieser Artikel und hier ist mein code:

Client:

namespace Prj\SoapBundle\Controller;

class SoapController extends Controller
{
    public function indexAction()
    {
        $client = new \SoapClient('http://localhost/test.wsdl');
        $client->getClusterName();

Server:

namespace Prj\SoapBundle\Controller;

class SoapController extends Controller
{
    public function indexAction()
    {
    ini_set("soap.wsdl_cache_enabled", "0");
    $server = new \SoapServer($this->container->getParameter('wsdl'));
    $server->setClass('SoapBundle\HelloService');
    $server->handle();

Service:

namespace Prj\SoapBundle;

class HelloService
{
    public function getClusterName() 
    {
        return '<?xml version="1.0" encoding="utf-8"?><root>Hello!</root>';
    }
}

*.wsdl-Datei scheint korrekt zu sein, denn es bindet den Aufruf mit controller und arbeitet gut mit Vanille PHP-Dienst.

Im Internet dieser Fehler in der Regel erklärt sich durch zwischengespeicherte wsdl -, aber das hier gehandhabt wird im server-code durch festlegen soap.wsdl_cache_enabled parameter auf null.

InformationsquelleAutor Minras | 2012-07-26
Schreibe einen Kommentar