在__soapCall之前获取SOAP XML?

Vnu*_*nuk 5 php soap

在将SOAP Client发送到Web服务之前,是否可以获取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.
Run Code Online (Sandbox Code Playgroud)

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

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

ben*_*njy 12

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

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

$client = new SoapClient($wsdl, array('trace' => true));
Run Code Online (Sandbox Code Playgroud)

然后执行任何必要的处理以准备进行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
Run Code Online (Sandbox Code Playgroud)

而且,如果您还想查看响应,则以下内容应该有效:

var_dump($client->__getLastResponseHeaders()); //response headers
var_dump($client->__getLastResponse()); //the response
Run Code Online (Sandbox Code Playgroud)

  • 您实际上可以在不发送的情况下查看它:http://stackoverflow.com/a/1626572/1196148 (2认同)