2010-06-23 35 views

回答

0

简而言之,这对于SoapServer类来说是不可能的。

当前的实现会在生成XML文档时检查参数的有效性(以确保不会发送疯狂的无效SOAP参数)。

虽然有可能实现你在扩展中要求的东西,但我会是一个重大的改变,因为它必须在参数上循环两次,一次检查有效性(以便他们可以扔肥皂故障),然后再次序列化到客户端。

这也是可能在您的PHP脚本中的userland中实现此操作,但这需要您手动序列化所有响应数据(因为内置类不会向您公开此功能)。如果您控制请求的两端(客户端和服务器),并且不需要利用服务器库提供的​​任何“高级”soap功能,则这不是一个糟糕的选项。

为此,您只需发送一个标准的SOAP XML标头,然后在将数据直接写入客户端时将其转换为XML。

+0

soap扩展可以接收流而不是字符串,然后从流中读取,编码并发送到客户端,直到流结束。我不知道它会有多难(我不熟悉代码库),但我没有得到你的双循环参数。 – Artefacto 2010-06-23 19:07:33

+0

问题在于库无法及时检测到编码错误(即将响应转换为SOAP错误),因为它已经发送了输出和标题。一个soap故障应该发送一个500状态代码,如果它在结果中验证了所有参数之前开始发送输出,它就无法做到这一点。 – 2010-06-23 19:41:01