Я закодировал сервер ws SOAP с использованием библиотеки NuSOAP, и он работает довольно хорошо, но поскольку клиент должен быть реализацией SAP, при попытке связаться с ним из SAP возникают некоторые проблемы. Мой WSDL автоматически генерируется nusoap и содержит следующие определения
<definitions targetNamespace="https://example.com/ws/"
xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="https://www.w3.org/2001/XMLSchema"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="https://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="https://example.com/ws/" xmlns:soap="https://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="https://schemas.xmlsoap.org/wsdl/" xmlns="https://schemas.xmlsoap.org/wsdl/">
<types>
<xsd:schema elementFormDefault="qualified" targetNamespace="https://example.com/ws/">
<xsd:import namespace="https://schemas.xmlsoap.org/soap/encoding/"/>
<xsd:import namespace="https://schemas.xmlsoap.org/wsdl/"/>
Этот WSDL проверен soap-ui 5.5 и отлично работает с клиентами php, но не с SAP. Сначала я должен переключиться со стиля rpc/encoding
на document/literal
, и я могу добиться этого, изменив некоторые значения конфигурации в классе сервера nusoap.
В любом случае, согласно диагностике SAP, остается проблема, и она запускается <xsd:import namespace="https://schemas.xmlsoap.org/soap/encoding/"/>
.
Ошибка в SAP: Incorrect value: Unknown namespace https://schemas.xmlsoap.org/soap/encoding/
Я проверил этот URL-адрес, и он правильный. Также я безуспешно пытаюсь удалить эту строку из класса мыльного сервера, потому что я нашел ее и прокомментировал строку 1106 в class.soap_server.php.
$this->wsdl->schemas[$schemaTargetNamespace][0]->imports['https://schemas.xmlsoap.org/soap/encoding/'][0] = array('location' => '', 'loaded' => true);
Но это не влияет на сгенерированный wsdl.
Любая идея будет действительно оценена. Заранее спасибо.
document/literal
во всех определениях complexType, где NuSOAP имеет заполнитель дляuse
иstyle
, но я думаю, что этого недостаточно. Во всяком случае, явно оскорбительные строки для SAP - это импорт пространств имен. ``` ‹xsd:import namespace=schemas.xmlsoap.org/soap/encoding/› ‹xsd:import namespace=schemas.xmlsoap.org/wsdl/›``` потому что считаются неизвестным пространством имен 28.08.2019