Magento API не работает с wsdl.exe, но работает с Soap UI

Я пытаюсь интегрировать Magento 1.7 с приложением C#.

Когда я попытался использовать функцию "Добавить ссылку на службу" в Visual Studio, она находит службу и все операции, но когда я нажимаю кнопку ОК, она ничего не генерирует. т.е. файл Reference.cs практически пуст (имеет только одну строку с пространством имен).

Я попытался с помощью wsdl.exe для создания прокси в командной строке, и я получил следующую ошибку:

R2718: wsdl:binding в ОПИСАНИИ ДОЛЖЕН иметь тот же набор операций wsdl:, что и wsdl:portType, к которому он относится. - Операция "catalogProductAttributeRemove" для portType "Mage_Api_Model_Server_Wsi_HandlerPortType" из пространства имен "urn:Magento" не имеет соответствующей привязки.

Дополнительные сведения о базовом профиле WS-I v1.1 см. В спецификации по адресу http://www.ws-i.org/Profiles/BasicProfile-1.1.html.

Ошибка: невозможно импортировать привязку 'Mage_Api_Model_Server_Wsi_HandlerBinding' из пространства имен 'urn:Magento'. - Операция catalogProductAttributeRemove для portType 'Mage_Api_Model_Server_Wsi_HandlerPortType' из пространства имен 'urn:Magento' имеет следующую синтаксическую ошибку: Операция не имеет соответствующей привязки. Проверьте, совпадают ли имена операций, входов и выходов в разделе Binding с соответствующими именами в разделе PortType.

Затем я попытался использовать Soap UI для загрузки того же wsdl, и он работает нормально. Прокси сгенерирован и я могу звонить без проблем.

Оригинальный файл wsdl находится здесь: https://gist.github.com/4514723 за исключением того, что я заменил строку 6297 на пример URL.

Итак, мой вопрос: почему Soap UI мог генерировать прокси и совершать звонки без проблем, а Visual Studio - нет? Как я могу это исправить?

1 ответ

Решение

См. Раздел " Создание клиента веб-службы в режиме соответствия WS-I".

Вам нужно будет изменить код Magento, чтобы исправить WSDL-совместимое определение WSDL в app\code\core\Mage\Catalog\etc\wsi.xml,

Пользовательский интерфейс SOAP, вероятно, более терпим к ошибкам в WSDL по сравнению с другими инструментами.NET/Java.

Другие вопросы по тегам