[英]Handle SOAP fatal error when there is a connection issue
我正在嘗試使用php 5.6中的WSDL文件連接到soap服務
如果我在網絡上,下面的代碼片段可以正常工作,但是如果我斷開連接,則會出現致命錯誤。
try {
$soap_client = new SoapClient($wsdl_file, ['exceptions' => true]);
}
catch (SoapFault $fault) {
echo 'poop';
}
catch (Exception $exception) {
echo 'pee';
}
編輯:它似乎確實與SoapFault做了一些,因為我可以看到我的'便便'調試消息,但它仍然會導致致命錯誤
這些是我得到的錯誤
Warning (2): SoapClient(): php_network_get_addresses: getaddrinfo failed: No such host is known.
Warning (2): SoapClient(http://soap.service.com/serivce.svc) [soapclient.soapclient]: failed to open stream: php_network_getaddresses: getaddrinfo failed: No such host is known.
Error: SOAP-ERROR: Parsing Schema: can't import schema from 'http://soap.service.com/serivce.svc'
我該如何優雅地處理錯誤,以便php繼續運行,所以我可以設置一個變量並呈現HTML頁面,指示存在連接問題
這是一個Cakephp問題
https://github.com/cakephp/cakephp/issues/8501
$restore = error_reporting(0);
try {
$soap_client = new SoapClient($wsdl_file, ['exceptions' => true]);
}
catch (SoapFault $e) {
trigger_error($e->getMessage()); // Overwrites E_ERROR with E_USER_NOTICE
}
finally {
error_reporting($restore);
}
您應該考慮所有異常類型。 嘗試將Exception而不是SoapFault放入catch語句中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.