Zend - WebService



  • Hallo Leute bin neu hier und versuch gerade mit Zend Framework einen Webservice anzubieten (zu realisieren).

    Das Ganze mache ich in MVC und es siet dann ca. so aus:

    <?php
    
    class SoapController extends Zend_Controller_Action
    {
        public function balanceAction()
        {
             require_once APPLICATION_PATH . '/models/CustomerWebservice.php';
    
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout()->disableLayout();
    
            // disabling WSDL cache
            ini_set("soap.wsdl_cache_enabled", "0");
    
            // get request
            $request = $this->getRequest();
            $paramwsdl = $request->getParam('wsdl');
    
            if($paramwsdl == 1)
            {
                // return the WSDL
                $autodiscover = new Zend_Soap_AutoDiscover();
                $autodiscover->setClass('CustomerWebservice');
                $autodiscover->handle();
                exit();
            }
            else
            {
                // handle SOAP request
                $server = new SoapServer('http://gateway.domain.de/soap/balance/wsdl/1');
                $server->setClass('CustomerWebservice');
                $server->handle();
                exit();
            }
        }
    
        public function clientAction()
        {
            $client = new Zend_Soap_Client('http://gateway.domain.de/soap/balance/wsdl/1');
    
            $name = $client->getName(5);
            echo 'Name:' . $name;
        }
    
    }
    

    Und die Customer Klasse so:

    <?php
    
    class CustomerWebservice
    {
        /**
         * Gibt Namen aus
         *
         * @param integer $id
         * @return string
         */
    
        public function getName($id)
        {
            return "Test";
        }
    }
    

    Wenn ich jetzt das ganze so aufrufe:

    http://gateway.domain.de/soap/balance/wsdl/1

    wird folgende WSDL im Browser angezeigt:

    <definitions name="CustomerWebservice" targetNamespace="http://gateway.domain.de/soap/wsdl/1">
    <types>
    <xsd:schema targetNamespace="http://gateway.domain.de/soap/wsdl/1"/>
    </types>
    <portType name="CustomerWebservicePort">
    <operation name="getName">
    <documentation>echoes input string
    Test method</documentation>
    <input message="tns:getNameIn"/>
    <output message="tns:getNameOut"/>
    </operation>
    </portType>
    <binding name="CustomerWebserviceBinding" type="tns:CustomerWebservicePort">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="getName">
    <soap:operation soapAction="http://gateway.domain.de/soap/wsdl/1#getName"/>
    <input>
    <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://gateway.domain.de/soap/wsdl/1"/>
    </input>
    <output>
    <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://gateway.domain.de/soap/wsdl/1"/>
    </output>
    </operation>
    </binding>
    <service name="CustomerWebserviceService">
    <port name="CustomerWebservicePort" binding="tns:CustomerWebserviceBinding">
    <soap:address location="http://gateway.domain.de/soap/wsdl/1"/>
    </port>
    </service>
    <message name="getNameIn">
    <part name="str" type="xsd:string"/>
    </message>
    <message name="getNameOut">
    <part name="return" type="xsd:string"/>
    </message>
    </definitions>
    

    Ich hoffe die Stimmt so weit...?!

    Wenn ich dann aber im Browser den Client zum testen aufrufe:

    http://gateway.domain.de/soap/client

    Dann kommt:

    Exception information:

    Message: Wrong Version

    Sieht jemand vielleicht den Fehler oder kann mich in richtige Richtung anstossen ? Habe schon alles mlgliche ausprobiert, finde aber nichts 😞


Anmelden zum Antworten