Получить SOAP XML до __soapCall? - PullRequest
       21

Получить SOAP XML до __soapCall?

5 голосов
/ 07 января 2010

Можно ли получить XML, сгенерированный клиентом SOAP, перед отправкой в ​​веб-сервис?

Мне это нужно, потому что в ответ веб-службы, если один из параметров действительно неверен, я получаю сообщения об ошибках типа

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 watcher, захват вызова веб-службы, копирование и вставка xml в текстовый редактор и переход к столбцу 408, чтобы увидеть, в чем проблема.

Я бы очень хотел упростить этот процесс, получив XML до его отправки.

1 Ответ

12 голосов
/ 09 января 2010

Это очень, очень трудно (почти невозможно) сделать это. Гораздо проще использовать встроенную функцию отладки класса 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...