1)如果超时,PHP会抛出一个SoapFault异常,其中faultcode="HTTP"和faultstring="Error Fetching http headers" 。
2)在我看来,区分超时错误和Web服务问题的最佳方法是查看SoapFault类的faultcode和faultstring成员。
特别地,故障faultcode元素旨在由软件使用以提供用于识别故障的算法机制。
您还可以阅读PHP手册的注释,没有方法可以读取faultcode属性,因此您必须直接访问它(例如。 $e->faultcode ),因为getCode()方法不起作用。
SOAP 1.1 Spec为faultcode字段定义了四个可能的值:
VersionMismatch :处理方发现SOAP Envelope元素的名称空间无效
MustUnderstand :SOAP Header元素的直接子元素,处理方未理解或未遵守,包含值为“1”的SOAP mustUnderstand属性
客户端 :客户端类错误表示消息未正确形成或未包含相应信息才能成功。 例如,消息可能缺少正确的身份验证或支付信息。 这通常表明不应该在没有变化的情况下重新发送消息。
服务器 :服务器类错误表示无法处理消息的原因不是直接归因于消息本身的内容,而是处理消息。 例如,处理可以包括与没有响应的上游处理器通信。 该消息可能在稍后的时间点成功。
除了这些代码之外,PHP还使用HTTP代码来识别协议级别发生的错误(例如:套接字错误); 例如,如果在ext / soap / php_http.c源代码中搜索add_soap_fault ,则可以看到何时生成