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