Я работаю над проектом, где я проверяю информацию от пользователя с помощью веб-службы SOAP. В настоящее время я забочусь о ошибках, предполагая, что получаю ответы от веб-службы, но также должен обрабатывать крайние случаи таймаута или недоступности службы.
В случае тайм-аута или недоступности службы мне нужно сделать вид, что запрос был успешным (что веб-служба одобрила информацию), но я не понимаю, какие исключения выбрасываются.
Некоторые псевдокоды:
// $client is PHP SoapClient class
try {
$response = $client->SomeSoapRequest();
}
catch(SoapFault $e){
// handle issues returned by the web service
}
catch(Exception $e){
// handle PHP issues with the request
}
Я не могу найти:
- Являются ли тайм-ауты
SoapFault
? Если да, то каков наилучший способ различать ошибку таймаута и проблемы веб-сервиса (например, ошибка типа и т.д.)? Я нашел одну страницу, в которой упоминалась ошибка, когда сообщение было чем-то вроде "Ошибка загрузки заголовков", но не упоминало, было ли это ошибкой мыла. - Как потенциально может случиться отсутствие службы? Исключение PHP похоже, что это имеет смысл (SoapFault будет возвращен из веб-службы, где недоступность будет проблемой сокета или аналогичной)?
- Существует ли существующая служба (например, пример), с которой я могу протестировать таймаут? Большинство обсуждений, связанных с таймаутом, по-видимому, связаны с предотвращением тайм-аутов путем расширения значения тайм-аута по умолчанию, что не является идеальным в этой ситуации.