Рассмотрим этот пример клиента SOAP script:
$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 запроса.
Необходимо включить трассировку когда вы создаете свой SoapClient. Вот так:
$SOAP = new SoapClient($WSDL, array('trace' => true));
$Data = array('Something'=>'Some String','SomeNumber'=>22);
Затем вызовите метод __getLastRequest после того, как вы сделали вызов службы для просмотра XML.
$Response = $SOAP->DoRemoteFunction($Data);
echo $SOAP->__getLastRequest();
Будет выведен XML-запрос.
Дополнительная информация: http://www.php.net/manual/en/soapclient.getlastrequest.php
если вы запускаете клиент локально, Fiddler — отличный способ просмотра сообщений в сети, не зависящий от реализации.
Если вы запускаете его удаленно, вы можете использовать что-то вроде Apache TCPMON Standalone или через eclipse*
*просто связываясь с первым попаданием из Google