Client kann SOAP Antwort nicht verarbeiten

herrentor

Grünschnabel
Hallo zusammen,

ich habe einen Webservice implementiert der auf einer Amazon WSDL Datei basiert. Zum Testen des Clients habe ich eine einfache XML Datei eingebunden. Jetzt versuche ich seit Tagen dieselbe XML Datei vom Soap Server zurückgeben zu lassen.

Die Funktion ListUpdatedInventorySupply($request) in der Serverdatei gibt:

PHP:
return Amazon_FWSInventory_Model_ListUpdatedInventorySupplyResponse::fromXML(file_get_contents(
'Amazon/FWSInventory/Mock/ListUpdatedInventorySupplyResponse.xml',  TRUE));

PHP:
public static function fromXML($xml)
    {
        $dom = new DOMDocument();
        $dom->loadXML($xml);
        $xpath = new DOMXPath($dom);
    	$xpath->registerNamespace('a', 'http://fba-inventory.amazonaws.com/doc/2009-07-31/');
        $response = $xpath->query('//a:ListUpdatedInventorySupplyResponse');
        if ($response->length == 1) {
            return new Amazon_FWSInventory_Model_ListUpdatedInventorySupplyResponse(
($response->item(0))); 
        } else {
            throw new Exception ("Unable to construct 
Amazon_FWSInventory_Model_ListUpdatedInventorySupplyResponse from provided XML. 
                                  Make sure that ListUpdatedInventorySupplyResponse is a root 
element");
        }
          
    }


zurück über:

PHP:
$server = new SoapServer("AmazonFBAInventory.wsdl"); 
$server->addFunction("ListUpdatedInventorySupply");
$server->handle();

Nach Eingabe in einen SOAP Web Client bekomme ich alle Werte der XML Datei hintereinander gehängt ausgegeben:

stringtrue1string2674763831string22stringstring2stringstringstrin.... usw.

Das kann der Client dann anscheinend nicht verarbeiten und gibt einen 500 Error wegen Zeitüberschreitung aus. Wenn die XML Datei aber nicht über den Webservice aufgerufen wird, sondern lokal mit dem gleichen Return wie beim Server, geht es. Habt Ihr irgendeine Idee? Normal müsste ich doch nur die XML Datei übergeben, ohne die fromXML Funktion, aber dann bekomme ich nichtmal mehr was bei dem Soap Web Client ausgegeben. Hab mal die Mock.php Klasse, mit der der Client funktioniert, und die Client.php Klasse für den Webservice Austausch als *.txt Datei hinzugefügt.
Hab ich die Client Klasse anstatt der Mock eingebunden, bekomme ich folgende Fehlermeldung:

Caught Exception: Maximum number of retry attempts reached : 4 Response Status Code: 500 Error Code: Error Type: Request ID: XML:

Also es wird eine Exception in der Funktion _pauseOnRetry($retries, $status) der Client Klasse geworfen.

Danke im vorraus schon mal.
 
Zurück