Очень странная проблема с SoapClient - PullRequest
0 голосов
/ 04 августа 2011
 try
  {
    $client = new \SoapClient($wsdlUrl, array(
      'cache_wsdl' => 0, 'exceptions' => true, 'trace' => true));

    $client->getPage($parameter);
  }
  catch(\Exception $e)
  {
    die("exception");
  }

Хорошо, это то, что выполняет запрос SOAP. $ wsdlUrl содержит URL-адрес WSDL, а параметр $ - XML-документ.

И все работает как шарм!

Теперь я просто добавляю еще несколько узлов в документ XML в параметре $ и получаю фатальную ошибку.

Это не так уж и странно, но то, что надо, - это сочетание следующих трех наблюдений:

1) для исключения задано значение true .... но исключение не выдается / это был б / к. Я забыл поставить обратную косую черту перед исключением в операторе catch .

2) вместо этого регистрируется ошибка:

PHP Fatal error:  SoapClient::SoapClient(): 
'uri' option is required in nonWSDL mode in /var/w[...]

3) но URL-адрес WSDL предоставлен и, конечно, действителен, так как все снова работает просто отлично после пропуска добавления новых узлов . они не влияют на параметр wsdl.

1 Ответ

1 голос
/ 04 августа 2011

Хорошо, я выяснил источник проблемы.Нет действительно удовлетворительного ответа на этот вопрос, но есть несколько вещей для изучения!:)

Важно то, что запрос был отправлен и обработан сервером SOAP.Но сервер отвечает с ошибкой.

Таким образом, очевидно, что хотя фатальная ошибка, связанная с отсутствием wsdl и параметром подключения, не означает, что запрос не был отправлен на мой взгляд, очень нелогично, если b / c не предоставлен wsdl и параметры соединения, то как может быть выполнен запрос?

EDIT

Естьеще одна ошибка в коде.Я забыл поставить обратную косую черту перед исключением!Без этого это не относится к классу Exception.

Тогда исключение выдается и перехватывается.

...