【发布时间】:2015-03-25 15:04:04
【问题描述】:
我正在尝试捕获 PHP 的 SoapServer 类发送的响应以在实际发送到浏览器之前进行调试。
我正在使用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 和ob_get_clean()。尽管 $soap->handle() 正在结束请求,但 PHP 似乎从未达到这一点。
如果我在缓冲区中回显一个字符串,它不会发送到浏览器并被正确缓冲,这让我认为$soap->handle() 正在做一些破坏它的事情。
我们将不胜感激。
【问题讨论】:
标签: php soap buffering output-buffering soapserver