How do I see the actual XML generated by PHP SOAP Client Class?
考虑以下示例SOAP Client脚本:
1 2 3 4 5 6 | $SOAP = new SoapClient($WDSL); // Create a SOAP Client from a WSDL // Build an array of data to send in the request. $Data = array('Something'=>'Some String','SomeNumber'=>22); $Response = $SOAP->DoRemoteFunction($Data); // Send the request. |
在最后一行,PHP从您指定的数组中获取参数,然后使用WSDL构建要发送的XML请求,然后将其发送。
如何获取PHP以向我展示其构建的实际XML?
我正在对应用程序进行故障排除,需要查看请求的实际XML。
使用
1 2 3 | echo"REQUEST:\ " . $SOAP->__getLastRequest() ."\ "; |
请记住,只有在
1 |
1 2 3 4 5 6 7 | $SOAP = new SoapClient($WSDL, array('trace' => true)); $Response = $SOAP->DoRemoteFunction($Data); echo"REQUEST:\ " . htmlentities($SOAP->__getLastRequest()) ."\ "; |
这将不会打印上一个请求,但也会使xml标记在浏览器中可见
如果您是在本地运行客户端,则Fiddler是查看在线消息的一种与实现无关的好方法。
如果要远程运行它,则可以使用Apache TCPMON Standalone或通过eclipse *之类的工具
*仅链接到Google的第一则匹配
Quinn Comendant的答案存在问题,即
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class DummySoapClient extends SoapClient { function __construct($wsdl, $options) { parent::__construct($wsdl, $options); } function __doRequest($request, $location, $action, $version, $one_way = 0) { throw new Exception($request); } function __call($function_name, $arguments) { try { parent::__call($function_name, $arguments); } catch (Exception $e) { return $e->getMessage(); } } } |
这里没有必要使用选项