Как сделать так, чтобы веб-служба ColdFusion возвращала SOAP вместо WDDX? - PullRequest
2 голосов
/ 07 ноября 2011

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

Ответы [ 4 ]

1 голос
/ 07 ноября 2011

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

<cffunction name="GetData" returntype="xml" returnformat="plain">
1 голос
/ 08 ноября 2011

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

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

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

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

1 голос
/ 07 ноября 2011

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

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

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

0 голосов
/ 02 мая 2018

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

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

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

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

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

...