Bobby: Probleme im Verständnis mit SOAP und WSDL

Beitrag lesen

Moin

folgendes. Ich habe eine Webseite mit Artikeln und Artikelgruppen.

ich möchte gern die Anzahl der Artikelgruppen über SOAP mit Hilfe von SOAP und WSDL zurückgeben lassen. dazu möchte ich gern die SOAP-Erweiterung von PHP nutzen.

hier die Anfrage.php:

<?php  
$client = new SoapClient('http://localhost/shop/info.wsdl');  
$result = $client->getCategoryCount();  
echo $result;

Dazu die info.wsdl:

  
<?xml version ='1.0' encoding ='UTF-8' ?>  
<definitions name='TestServer'  
  xmlns:tns=' [url]http://localhost/shop/info.wsdl[/url] '  
  xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'  
  xmlns:xsd='http://www.w3.org/2001/XMLSchema'  
  xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'  
  xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'  
  xmlns='http://schemas.xmlsoap.org/wsdl/'>  
  
<message name='getCategoryCountRequest'>  
</message>  
<message name='getCategoryCountResponse'>  
  <part name='Result' type='xsd:float'/>  
</message>  
  
<portType name='TestServerPortType'>  
  <operation name='getCategoryCount'>  
    <input message='tns:getCategoryCountRequest'/>  
    <output message='tns:getCategoryCountResponse'/>  
  </operation>  
</portType>  
  
<binding name='TestServerBinding' type='tns:TestServerPortType'>  
  <soap:binding style='rpc'  
    transport='http://schemas.xmlsoap.org/soap/http'/>  
  <operation name='getCategoryCount'>  
    <soap:operation soapAction='urn:xmethodsTestServer#getCategoryCount'/>  
    <input>  
      <soap:body use='encoded' namespace='urn:xmethodsTestServer'  
        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>  
    </input>  
    <output>  
      <soap:body use='encoded' namespace='urn:xmethodsTestServer'  
        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>  
    </output>  
  </operation>  
</binding>  
  
<service name='TestServerService'>  
  <port name='TestServerPort' binding='TestServerBinding'>  
    <soap:address location='http://localhost/shop/index.php?view=wsdl'/>  
  </port>  
</service>  
</definitions>  

als letztes die http://localhost/shop/index.php?view=wsdl

  
<?php  
function getCategoryCount() {  
    return $a;  
}  
  
$server = new SoapServer(NULL,  
 array('uri' => "http://localhost/shop/"));  
$server->addFunction('getCategoryCount');  
$server->handle();  

Bei der letzten Datei steht mir (außerhalb der Funktion getCategoryCount() eine VAriable mit der Anzahl der Kategorien zur Verfügung ($cats)

wie bekomme ich die nun an die Funktion getCategoryCount() übergeben? Ich habe im WSDL definiert, das eine leere Message an den Server geht und die ANzahl zurückkommen soll.

Aber irgendwier bekomm ich die Variable nicht in die Funktion getCategoryCount(). Wenn ich da zum Beispiel eine Zahl hardcode, dann funktioniert diese, was mir sagt, dass meine WSDL richtig ist. Anders aber leider nicht.

Wer kann helfen?

Gruß Bobby

--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
### Henry L. Mencken ###
-> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
## Viktor Frankl ###
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)