Как сделать так, чтобы веб-служба ColdFusion возвращала SOAP вместо WDDX?

Я создал ColdFusion Web Service, но он возвращает WDDX вместо SOAP. Как мне сделать так, чтобы он возвращал SOAP вместо WDDX?

4 ответа

Для сложных объектов вам необходимо правильно настроить CFC. Прочитайте: Использование компонентов ColdFusion для определения типов данных для веб-сервисов

обновление: или вы можете создать XML-представление вашего объекта с помощью <cfxml>, а затем вернуть объект XML с returnType="xml" в cffunction,

Вы можете проверить плагин Coldbox XMLConverter как пример кода для преобразования встроенных сложных типов CF в XML.

Есть <cffunction> возвратите объект XML и установите для параметра "returnformat" значение "plain".

<cffunction name="GetData" returntype="xml" returnformat="plain">

Метод CFC с access=remote должен возвращать мыло, а не WDDX. Я уверен, что использовал эту функциональность в течение многих лет. Я подозреваю, что может происходить то, что тип содержимого основан на запросе, который делает клиент. Я бы скачал Soap-UI и протестировал http://your.server/yourCFC.cfc?wsdl чтобы увидеть, будет ли SOAP-UI возвращать WDDX. Если это так, я немного растерялся, но все равно сообщите об этом здесь, и я еще посмотрю. Если Soap-UI видит правильный ответ, посмотрите на заголовки, которые он отправляет, и сравните их с запросом, который вы делаете (возможно, через браузер?)

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

Приведенный выше запрос http может быть полностью отключен, но его относительно легко проверить, и я думаю, что он звонит в колокол.

Вы также можете проверить тип возвращаемого значения функции, которую вы пишете. Чтобы CF генерировал хороший WSDL, он должен иметь возможность извлекать метаданные из возвращаемого CFC.

Немного опоздал к игре, но вы рассматривали это как простой HTTP-запрос, а не как с SOAP-пакетом?

Например, вы делали это:

http://api.example.com/something.cfc?method=test&arg1=val1

вместо фактического запроса SOAP с конвертом, заголовками, телом и т. д.?

HTTP-запрос возвращает WDDX по умолчанию или JSON, указав формат возврата, в то время как SOAP-запрос вернет данные в требуемом формате.

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