forum.bitel.ru
http://forum.bitel.ru/

Неправильный идентификатор в wsdl [6.0] (CRM)
http://forum.bitel.ru/viewtopic.php?f=44&t=9992
Страница 1 из 1

Автор:  vkulakov [ 05 дек 2014, 13:55 ]
Заголовок сообщения:  Неправильный идентификатор в wsdl [6.0]

В процессе написания примера php-клиента столкнулся со следующей проблемой.

У меня настроено два модуля Inet, один с идентификатором 24, другой с идентификатором 25. Когда в браузере пишу
Код:
http://1.2.3.4:8080/bgbilling/executer/ru.bitel.bgbilling.modules.inet.api/24/InetServService?wsdl

в полученом документе вот такой код:
Код:
<types>
    <xsd:schema>
        <xsd:import
            namespace="http://service.common.api.inet.modules.bgbilling.bitel.ru/"
            schemaLocation="http://1.2.3.4:8080/bgbilling/executer/ru.bitel.bgbilling.modules.inet.api/25/InetServService?xsd=1"/>
    </xsd:schema>
    <xsd:schema>
        <xsd:import
             namespace="http://common.bitel.ru"
             schemaLocation="http://1.2.3.4:8080/bgbilling/executer/ru.bitel.bgbilling.modules.inet.api/25/InetServService?xsd=2"/>
    </xsd:schema>
</types>

Видно, что идентификатор модуля другой. В результате, когда через php создаю клиент и выполняю запрос, реально запрос попадает в другой модуль. Такая штука может надолго ввести в ступор.

Это я что-то неправильно настроил в биллинге или это баг?

Другие wsdl и модули не проверял. Если изначально брать wsdl для 25-го модуля, то внутри тоже 25-й модуль и всё работает как положено.

Автор:  Amir [ 05 дек 2014, 18:18 ]
Заголовок сообщения:  Re: Неправильный идентификатор в wsdl [6.0]

Наверное, баг. Web-сервис на самом деле один и тот же, потому везде URL от первого вызова.
Но проблема не в этой URL, а в том что в самом низу:
Цитата:
<port name="InetServService" binding="tns:InetServServiceBinding">
<soap:address location="http://127.0.0.1:8080/bgbilling/executer/ru.bitel.bgbilling.modules.inet.api/24/InetServService"/>
</port>
Т.е. WS-клиент после обработки WSDL по умолчанию для работы с веб-сервисом использует адрес (endpointAddress) из WSDL файла. Но это часто не работает, т.к. nginx, проброс порта или WSDL-файл мог быть взят с какой-то другой машины и т.п.
Поэтому у WS-клиента есть возможность указать другой endpointAddress, думаю и в php тоже. Пока предлагаю попробовать так.

Автор:  vkulakov [ 05 дек 2014, 18:26 ]
Заголовок сообщения:  Re: Неправильный идентификатор в wsdl [6.0] (CRM)

Веб-сервис клиенты у меня сгенерированы на java и endpointAddress для них задаётся явно (не дефолтный из wsdl), поэтому в реальности такую проблему не мог обнаружить. А вот когда попытался написать пример на PHP для соседней темы - вот тогда задумался, почему ошибок нигде нет, но и сервис получить не могу.

Спасибо за ответ.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/