在将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 来简化此过程。
答案 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