Как сделать так, чтобы веб-служба 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-запрос вернет данные в требуемом формате.