Я пытаюсь захватить ответ, отправленный классом PHP SoapServer
для отладки, прежде чем он будет фактически отправлен в браузер.
Я использую Zend_Soap_Server
, который должен позволять захватывать вывод из SoapServer->handle()
с использованием буферизации вывода. Однако метод дескриптора, похоже, полностью игнорирует буфер, отправляет запрос прямо в браузер и уничтожает запрос.
Это выдержка, взятая непосредственно из метода Zend_Soap_Server->handle()
.
ob_start();
if ($setRequestException instanceof Exception) {
// Create SOAP fault message if we've caught a request exception
$fault = $this->fault($setRequestException->getMessage(), 'Sender');
} else {
try {
$soap->handle($this->_request);
} catch (Exception $e) {
$fault = $this->fault($e);
}
}
$this->_response = ob_get_clean();
Как вы можете видеть выше, вывод из $soap->handle()
должен быть захвачен в буфер и назначен $this->_response
с ob_get_clean()
. PHP, кажется, никогда не доходит до этого момента, поскольку $soap->handle()
завершает запрос.
Если я повторяю строку в буфере, она не отправляется в браузер и буферизуется правильно, что заставляет меня думать, что $soap->handle()
делает что-то, что ее ломает.
Любая помощь здесь будет принята с благодарностью.