Ich verbinde mich mit einem Drittanbieter-Dienst mit SoapClient. Die meiste Zeit es funktioniert gut, aber jeder einmal in eine Weile, vielleicht einmal aus jeden 100-150 Anrufe, erhalte ich die FehlerErhalten Sie schlechte WSDL von SoapFault?
Soap Failed: SOAP-ERROR: Parsing Schema: unexpected in complexType
Mein Code ist in einem try/catch mit einem erneuten Versuch, und es wird Arbeit an der nächsten Runde durch. Aber ich würde gerne die WSDL untersuchen, um herauszufinden, warum das scheitert, zum Teil für meine eigene Neugier, und für den Fall, dass ich es an die Firma weitergeben muss, mit der ich mich verbinde. Kann ich diese Informationen vom SoapFault erhalten? Oder müsste ich die URL aufrufen, um die Zeichenfolge zu erhalten? Ich fürchte, wenn ich die WSDL nach der Tat bekomme, kann es bereits behoben sein.
$pass = FALSE;
$this->soap = NULL;
$this->session = NULL;
do {
try {
Doc::i("Starting session");
$this->soap = new SoapClient($this->wsdl_url, ['trace' => 1]);
$pass = TRUE;
} catch (\SoapFault $e) {
Doc::e('Soap Failed: ' . $e->getMessage());
if(str_contains($e->getMessage(),'Parsing Schema') && !empty($e->detail)) {
Doc::e($e->detail); // Something new I'm trying to see if it helps
}
} catch (FatalErrorException $e) {
Doc::e("Soap failed really bad: " . $e->getMessage());
} catch (\Exception $e) {
Doc::e("Soap failed bad: " . $e->getMessage());
}
} while (!$pass);
['__getLastResponse'] (http://php.net/manual/de/soapclient.getlastresponse.php), da Sie' trace' verwenden? – bishop
Ich habe '__getLastResponse()' gefunden, und habe das auch hinzugefügt. Ich hoffe, es klappt beim nächsten Mal, wenn ich den Fehler bekomme. Danke, dass du das unterstützt hast! – aynber
Viel Glück! Diese Art von Fehlern sind ärgerlich. Ich habe eine offizielle Antwort geschrieben, falls das letztendlich klappt. – bishop