2010-01-07 5 views
5

Ist es möglich, den vom SOAP-Client generierten XML-Code zu erhalten, bevor er an den Webservice gesendet wird?Erhalten Sie SOAP XML vor __soapCall?

Ich brauche das, weil Antwort von webservice, wenn einer der Parameter wirklich falsch ist, ich Fehler wie

Server was unable to read request. 
---> There is an error in XML document (2, 408). 
---> Input string was not in a correct format. 

erhalten Dieser enthält in der Regel tcpmon oder eine andere TCP-Watcher Dienstprogramm Anheizen, den Webservice Anruf aufnehmen, kopieren und einfügen XML zum Texteditor und gehen Sie zu Spalte 408, um zu sehen, was das Problem ist.

Ich möchte diesen Prozess wirklich vereinfachen, indem ich die XML vor senden.

Antwort

11

Es ist sehr, sehr schwer (fast unmöglich), das zu tun. Viel einfacher ist es, die integrierte Debug-Funktionalität der Klasse SoapClient zu verwenden, um die Anfrage auszugeben, nachdem sie gesendet wurde. Sie können das tun, wie so:

Erstens, wenn Ihr Soapclient erstellen, aktivieren Tracing, etwa so:

$client = new SoapClient($wsdl, array('trace' => true)); 

Dann tun, was die Verarbeitung erforderlich ist, den SOAP-Aufruf, um bereit zu machen und es zu machen. Sobald es gemacht worden ist, geben die folgende Sie die Anfrage Sie gerade gesendet haben:

echo("<pre>"); //to format it legibly on your screen 
var_dump($client->__getLastRequestHeaders()); //the headers of your last request 
var_dump($client->__getLastRequest()); //your last request 

Und, wenn Sie die Antwort auch sehen wollen, sollten folgende Arbeiten:

var_dump($client->__getLastResponseHeaders()); //response headers 
var_dump($client->__getLastResponse()); //the response 
+0

bekommen, dass nach dem Senden der Anfrage funktioniert auch für mich :) Vielen Dank – Vnuk

+1

Sie können es tatsächlich sehen, ohne zu senden: http://Stackoverflow.com/a/1626572/1196148 –

Verwandte Themen