我试图在SoapServer
实际发送到浏览器之前捕获 PHP 类发送的用于调试的响应。
我正在利用Zend_Soap_Server
它应该允许SoapServer->handle()
使用输出缓冲捕获输出。但是,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
with ob_get_clean()
。$soap->handle()
尽管结束请求,PHP 似乎从来没有达到这一点。
如果我在缓冲区中回显一个字符串,它不会发送到浏览器并且被正确缓冲,这让我认为这$soap->handle()
是在做一些破坏它的事情。
在这里的任何帮助将不胜感激。