Как обработать ошибку при обращении к SOAP?

lyay

Новичок
Как обработать ошибку при обращении к SOAP?

В PHP при обращении к wsdl если происходит исключение, например неверно указан пароль, то возникает фатальная ошибка Fatal error: SOAP-ERROR: Parsing WSDL.
Как обработать эту ошибку в PHP? Следующий код не позволяет её обработать:
PHP:
 try {
$wsdl = new SoapClient('http://127.0.0.1/ws/moiservis.wsdl',
array('login' => 'user',
'password' => 'parol'));
$dostupna = true;
}catch(Exception $e) {
$dostupna = false;
trigger_error('Ошибка авторизации или внутренняя ошибка сервера. Не удалось связаться с базой.', E_ERROR);
}
 

lyay

Новичок
Не помогает. Написал так:
PHP:
 $wsdl = new SoapClient('http://127.0.0.1/ws/moiservis.wsdl',
array('login' => 'user',
'password' => 'parol',
'exceptions'     => false));
Исключение не вызывается.
Предполагаю что причина в том что опция exceptions позволяет обрабатывать исключения при выполнении методов web сервиса, а у меня стоит цель обработать исключение в момент создания объекта. $wsdl = new SoapClient(....). А тут значение опции exceptions не влияет на результат.

Пробовал написать так
PHP:
 $result = new SoapClient('http://127.0.0.1/ws/moiservis.wsdl',
                               array('login'          => 'user',
                                     'password'       => 'parol',
                                     'exceptions'     => 0,
                              ));
if (is_soap_fault($result)) {
      trigger_error("ОШИБКА SOAP Fault: (faultcode: {$result->faultcode}, faultstring: {$result->faultstring})", E_USER_ERROR);
} else{
    print('Настало счастье.');
    return $result;
}
Тоже не работает
 

DiMA

php.spb.ru
Команда форума
soap в пхп не работает, напиши руками (парсить - через XMLsimple)

если сервис http://127.0.0.1/ws/moiservis.wsdl от мелкософта, зайди туда бразером, тебе напишут текст запроса
 

lyay

Новичок
Автор оригинала: DiMA
soap в пхп не работает, напиши руками (парсить - через XMLsimple)
если сервис http://127.0.0.1/ws/moiservis.wsdl от мелкософта, зайди туда бразером, тебе напишут текст запроса
soap в пхп работает хорошо. Вот только с установкой соединения беда.

Если не найду решения, то вызов соединения напишу из ajax'а. В этом случае ошибка php выразится в том что яваскрипт получит кривой ответ. Вот тут-то я его и обработаю. Но это на крайний случай.
 

lyay

Новичок
Помогло!!! Спасибо.
Теперь позволяет нормально обработать ошибку и не роняет весь сайт.
 
Сверху