Php 您如何故意导致SoapFault进行测试?

Php 您如何故意导致SoapFault进行测试?,php,soap,soap-client,fedex,soapfault,Php,Soap,Soap Client,Fedex,Soapfault,我实现了一个SoapClient接口,用于处理联邦快递费率请求web服务的费率请求。昨晚凌晨1点左右,系统返回了soap故障条件,我的代码通过响应检查处理了这些条件(如果没有找到有效的速率响应,它基本上会跳过并发送一条通用消息),但没有具体处理 当服务本身停机时,我想向客户展示一条更有用的信息,特别是当远程服务实际停机时,针对此类故障,以减少对我们技术支持的呼叫。(一般信息是“稍后再试”,但如果我知道这是联邦快递服务出现问题,我可以说“联邦快递费率服务暂时不可用”,这样人们就会知道这不是我们的网

我实现了一个SoapClient接口,用于处理联邦快递费率请求web服务的费率请求。昨晚凌晨1点左右,系统返回了soap故障条件,我的代码通过响应检查处理了这些条件(如果没有找到有效的速率响应,它基本上会跳过并发送一条通用消息),但没有具体处理

当服务本身停机时,我想向客户展示一条更有用的信息,特别是当远程服务实际停机时,针对此类故障,以减少对我们技术支持的呼叫。(一般信息是“稍后再试”,但如果我知道这是联邦快递服务出现问题,我可以说“联邦快递费率服务暂时不可用”,这样人们就会知道这不是我们的网站,而是他们的网站)

我已经实现了处理SoapFault情况的代码,但现在我遇到了“如何测试它”的问题,因为联邦快递(FedEx)的费率服务昨晚只是短暂下降


有没有办法故意触发soap条件,甚至可能是出于测试目的的特定soap故障?

很难知道联邦快递(或任何其他)web服务的费率何时会下降;但是,如果您愿意加入,您将收到一封电子邮件,其中包含测试和生产服务不可用的官方日期和时间

即使提供了时间表,我也看到联邦快递服务(特别是费率)在没有任何通知的情况下下降了。我可能会收到错误异常、失败通知、错误通知或超时异常

因为很难知道服务何时真正停止,我建议您向用户提供一条消息,如“无法计算发货率,请稍后再试。如果问题仍然存在,请与我们的支持团队联系。”当您从Rate web服务获得的错误与用户提供的数据无关时。


最好的

很难知道联邦快递(或任何其他)网络服务的价格何时会下降;但是,如果您愿意加入,您将收到一封电子邮件,其中包含测试和生产服务不可用的官方日期和时间

即使提供了时间表,我也看到联邦快递服务(特别是费率)在没有任何通知的情况下下降了。我可能会收到错误异常、失败通知、错误通知或超时异常

因为很难知道服务何时真正停止,我建议您向用户提供一条消息,如“无法计算发货率,请稍后再试。如果问题仍然存在,请与我们的支持团队联系。”当您从Rate web服务获得的错误与用户提供的数据无关时。


最好的

如果您想故意触发服务故障,有一些方法可用

第一:为WSDL使用不同的URL。这样,就不会有任何效果,并且会抛出一个SoapFault异常。但请看一看,尤其是来自rasmus@php.net:您必须激活引发异常,使用
@
抑制错误,并且它在加载XDebug扩展时不起作用

实际上,您无论如何都希望这样做,因为这是捕获缺少的WSDL资源的唯一方法,而且这种情况可能与任何其他失败一样发生


对于其他内容,您可能希望查看并使用它来模拟实际服务,并返回SoapFault答案。

如果您想要故意触发服务故障,有一些方法可用

第一:为WSDL使用不同的URL。这样,就不会有任何效果,并且会抛出一个SoapFault异常。但请看一看,尤其是来自rasmus@php.net:您必须激活引发异常,使用
@
抑制错误,并且它在加载XDebug扩展时不起作用

实际上,您无论如何都希望这样做,因为这是捕获缺少的WSDL资源的唯一方法,而且这种情况可能与任何其他失败一样发生


对于其他内容,您可能希望查看并使用它来模拟真正的服务,并返回SoapFault答案。

我建议使用SoapUi来模拟服务。然后,您可以指示该服务将返回什么响应。将应用程序指向模拟服务并从那里进行测试。请参见SoapUi网站上的这篇文章:


我建议使用SoapUi来模拟服务。然后,您可以指示该服务将返回什么响应。将应用程序指向模拟服务并从那里进行测试。请参见SoapUi网站上的这篇文章:


实际上,你没有抓住问题的重点。问题不在于如何避免服务宕机,而在于如何在服务未停机的情况下处理服务宕机,以便能够编写代码来显示消息。实际上,您没有抓住问题的关键。这不是关于如何避免服务停机,而是如何在服务未停机的情况下处理停机,以便能够编写代码来显示消息。