исключение не пойман - PullRequest
       1

исключение не пойман

1 голос
/ 02 сентября 2010

У меня есть следующий код PHP на веб-странице:

$wsdl_url = "someURL?wsdl";
try {
    $client = new SoapClient($wsdl_url, array('login' => 'mylogin','password' => 'mypassword'));
    $client->myWebMethod();  // <-- problem call
} catch (Exception $e) {
    echo "none";
}

Это базовый вызов веб-службы. Проблема в том, что при появлении ошибки в строке $client->myWebMethod(), echo "none" не печатается. На самом деле ничего в блоке catch не работает. Следовательно, я не думаю, что исключение ловится.

Неустранимая ошибка отображается на веб-странице.

Вопрос: Есть идеи, почему это происходит? Я ожидал, что все исключения будут перехвачены и обработаны этим кодом. Но что я получаю, так это то, что фатальная ошибка отображается на странице. Может быть, веб-сервисы обрабатываются по-другому?

РЕДАКТИРОВАТЬ: ошибка в том, что отсутствует набор обязательных параметров. если я добавлю параметры, вызов работает нормально. Я намеренно опускаю параметры, чтобы получить ошибку, поэтому я бы знал, как ее устранить.

Ошибка выглядит примерно так: Неустранимая ошибка: SOAP-ERROR: у объекта нет 'myparameter1'

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 10 октября 2012

Сегодня утром у меня возникла та же самая проблема, когда я запускал собственный модуль для Drupal, для которого требовался внешний веб-сервис SOAP. Если честно, я не совсем уверен, как я решил проблему.

Оказывается, все дело в очистке кеша моего веб-сервера, связанной с соответствующим WSDL. В папке tmp / вы найдете различные файлы с именем wsdl-yourservice-etc . Удалите их, и все должно быть в порядке. Если нет, то проблема заключается в коде, а точнее в последовательности и синтаксисе аргументов, передаваемых в WSDL.

Надеюсь, я помог.

1 голос
/ 02 сентября 2010

К сожалению, это не уловимая ошибка.

Однако вы можете проверить, загружено ли расширение мыла, прежде чем пытаться создать его экземпляр, вызвав get_loaded_extensions с чем-то вроде:

if  (in_array('soap', get_loaded_extensions())) {
    // it's loaded!
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...