#php #soap
Вопрос:
Я работаю с API, который ведет себя не так, как я ожидал бы.
Я использую PHP и soap-клиент для выполнения запросов к API с помощью этого WSDL:
https://product.companyurl.co.uk:9450/Product.svc?wsdl
Это не работает и вызывает ошибку независимо от того, использую ли я soapui или любую конфигурацию клиента PHP soap, которую я могу найти в переполнении стека.
Однако, если я удалю порт и использую:
https://product.companyurl.co.uk/Product.svc?wsdl
Я могу просмотреть WSDL в своем браузере, и, похоже, он работает.
Проблема в том, что WSDL ссылается на 18 .xsd файлов в нем, которые также имеют один и тот же номер порта в них:
https://product.companyurl.co.uk:9450/Product.svc?xsd=xsd0
Опять же, порт здесь останавливает работу URL-адреса в браузере и вызывает ошибку в soapui или PHP soap клиенте.
Я загрузил WSDL локально и заменил все вхождения :9450 как в WSDL, так и в локальных копиях файлов .xsd.
Это сработало в пользовательском интерфейсе soap, вернуло все методы и, казалось, показало многообещающие результаты.
Однако я не могу запускать какие-либо методы, используя мою измененную версию api.
Я исхожу из предположения, что здесь что-то не так.
Простой версией моего вопроса было бы: почему они добавили это :9450 в WSDL, который, похоже, нарушает его, и могу ли я переопределить его, подключившись к API, чтобы я мог делать запросы?
Для справки, ошибка php, которую она возвращает, такова:
Фатальная ошибка: Неперехваченное исключение SoapFault: [WSDL] SOAP-ОШИБКА: Схема синтаксического анализа: не удается импортировать схему из ‘https://product.companyurl.co.uk:9450/Product.svc?xsd=xsd0’
Спасибо
Комментарии:
1. Вы разговаривали с людьми, которые предоставляют эту услугу?
2. Они изучают это, но прошло уже две недели, так что мне интересно, есть ли обходной путь, или я просто что-то не так понял.
3. Загрузка WSDL и замена ссылок на XSD должны помочь, как видно из SoapUI, который в конечном итоге может загрузить определения. Затем вы говорите: «Однако я не могу запускать какие-либо методы, используя мою измененную версию api» , Что вы имеете в виду под этим? Какую конечную точку службы вы вызываете? Работает ли выполнение звонков из SoapUI?
4. Спасибо, Богдан. В SoapUI он открывает wsdl, а затем все xsd-файлы. Пользовательский интерфейс Soap затем показывает все методы, которые я хотел бы вызвать, на левой панели. Однако использование этих методов не работает. Я звоню в конечную точку продукта, но звонки из SoapUI не работают.
5. Моя ошибка. У меня возникла проблема с неправильным паролем. Я думаю, что теперь это сработает. Спасибо