WedX - журнал о программировании и компьютерных науках

Сервер PHP SOAP для клиента SAP имеет проблемы с конфигурацией в WSDL

Я закодировал сервер 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.

Любая идея будет действительно оценена. Заранее спасибо.

23.08.2019

  • Вы не говорите, как вы используете WSDL на стороне SAP, поэтому я предполагаю, что вы создаете клиентский прокси с помощью кода транзакции SE80 или SPROXY. Вы можете легко загрузить WSDL на свой ноутбук, отредактировать его локально и создать клиентский прокси с помощью этого локально отредактированного файла WSDL. 23.08.2019
  • Эй, Сандра, спасибо за ваш вклад. Я не знаю, как команда SAP управляет своим соединением, потому что это не моя область, но они просто сообщили мне этот код ошибки. Итак, вы сказали мне, что SAP может управлять соединением с помощью локального редактирования файла wsdl, это нормально? Еще раз спасибо. 23.08.2019
  • Я подтверждаю. Создание клиентского прокси-сервера SAP — классическая проблема, поскольку синтаксический анализатор SAP WSDL не обрабатывает все возможности, а сообщения недостаточно явны. Существует SAP-нота/KBA 944029 (XML-схема, поддерживаемая генерацией прокси-сервера ABAP), в которой объясняются некоторые ограничения (но не все). Единственное решение состоит в том, чтобы сотрудники SAP адаптировали WSDL к тому, что позволяет SAP, а не в том, чтобы поставщики веб-сервисов изменили WSDL! Помните, что мой ответ действителен только в том случае, если команда SAP создает прокси-сервер клиента ABAP. 23.08.2019
  • Большое спасибо, Сандра, я поделюсь вашими мыслями с командой SAP, а пока я буду пытаться изменить класс сервера. 23.08.2019

Ответы:


1

Я должен переключиться со стиля rpc/encoding на document/literal

SAP не поддерживает стиль RPC в веб-сервисах, отсюда и ошибка.

Вот примечание SAP, в котором объясняется, как его адаптировать

https://launchpad.support.sap.com/#/notes/856597 / Офлайн-версия

Я прилагаю примеры, поясняющие формат WSDL, содержащиеся в примечании, на случай, если у вас нет S-логина для доступа заметка.

27.08.2019
  • Спасибо @Suncatcher за ответ. Я не эксперт в этой теме, но я выбрал 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
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

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

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]