在__soapCall之前获取SOAP XML?

时间:2010-01-07 10:11:57

标签: php soap

在将SOAP Client发送到webservice之前,是否可以获取SOAP生成的XML?

我需要这个,因为来自webservice的响应,如果其中一个参数确实是错误的,我会得到像

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

这通常包括启动tcpmon或其他一些tcp观察器实用程序,捕获webservice调用,将xml复制并粘贴到文本编辑器,然后转到第408列以查看问题所在。

我真的想通过在发送之前获取XML 来简化此过程。

1 个答案:

答案 0 :(得分:11)

这样做非常非常困难(几乎不可能)。使用SoapClient类'内置调试功能在发送后输出请求更容易。你可以这样做:

首先,在创建SOAPClient时,启用跟踪,如下所示:

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

然后执行任何必要的处理以准备进行SOAP调用并进行调用。一旦完成,以下内容将为您提供刚刚发送的请求:

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

而且,如果您也希望看到响应,则以下内容应该有效:

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