Ошибка PHP SoapClient - отсутствует имя для <fault> - PullRequest
2 голосов
/ 02 июня 2010

Я пытаюсь получить правильное подключение PHP к WSDL с помощью SoapClient, он подключается (как в случае с WSDL), но затем выдает следующую ошибку:

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Missing name for <fault> of 'invokeService'

Код PHP выглядит следующим образом:

$client = new SoapClient("wsdl.wsdl");

И XML в файле WSDL, в котором происходит сбой, выглядит следующим образом:

  <portType name="invokePort"> 
    <operation name="invokeService"> 
      <input message="wsdlns:invokeRequest"/> 
      <output message="wsdlns:invokeResponse"/> 
      <fault message="soap:fault"></fault> 
    </operation> 
  </portType> 

Есть идеи, что случилось?

Спасибо

1 Ответ

1 голос
/ 02 июня 2010

Ну, Missing name for <fault> звучит довольно очевидно. Вы пытались добавить атрибут «имя» к элементу ошибки?

ОБНОВЛЕНИЕ: Что касается ошибки Missing <message> with name 'soap:fault', вы можете попробовать следующее:

<message name="MyFaultName"/>
<portType>
    <!-- ... -->
    <fault name="MyFaultName">
        <soap:fault name="MyFaultName" use="literal"/>
    <fault>
</portType>

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

...