Ошибка SOAPClient веб-службы PHP

У меня есть веб-сервис, и я просто делаю простую вещь для вызова веб-сервиса в клиенте SOAP.

i.e.

$client = новый SoapClient("http://test.unistream.com/wcflib/service.svc?WSDL");

Это говорит

SOAP-ERROR: Анализ WSDL: «IWebService_GetCountries_InputMessage» уже определен

веб-сервис

http://test.unistream.com/wcflib/service.svc?WSDL

Спасибо.


person David    schedule 27.09.2010    source источник


Ответы (3)


Это может быть связано или та же проблема с этим: https://bugs.php.net/bug.php?id=43868 ,

также вы можете найти возможное решение здесь PHP SoapClient: проблемы с распределенным файлом WSDL

(может дубликат...)

позже отредактируйте, здесь другая ссылка: http://www.codingforums.com/showthread.php?t=181338

person adrian7    schedule 08.08.2011

Проблема в том, что тип «IWebService_GetCountries_InputMessage» определен более одного раза в этом WSDL. Это ошибка не вашего кода, а ошибки WSDL, который вы пытаетесь использовать. Вы должны поговорить с тем, кто написал WSDL, чтобы узнать, могут ли они воссоздать его и исправить проблему.

person benjy    schedule 08.08.2011

Я столкнулся с той же ошибкой в ​​своей системе: клиент Soap был на PHP (5.3.10), а серверная часть была написана на .NET:

  • Я загрузил wsdl "Foo.wsdl" из PHP
  • Затем «Foo.wsdl» импортировал «Bar.wsdl».
  • затем «Bar.wsdl» снова импортирует «Foo.wsdl»
  • Сбой PHP с «SOAP-ERROR: анализ WSDL: bla bla уже определено

Чтобы избежать этого, я просто использую стандартную функцию .net без учета регистра и вызываю первый wsdl в нижнем регистре ("foo.wsdl") вместо исходного случай (Foo.wsdl). Это сработало, потому что теперь foo.wsdl импортирует Bar.wsdl, а Bar.wsdl импортирует Foo.wsdl, и по любопытным вещам, которые я не могу объяснить, PHP это нравится.

person JayMore    schedule 10.03.2014