Веб-служба SOAP с необязательными аргументами

Я создал службу SOAP, которая имеет несколько необязательных аргументов метода. Я нашел некоторые проблемы:

  1. При вызове веб-службы мне всегда нужно передавать все аргументы, независимо от того, являются ли они необязательными или нет.
  2. Я обнаружил, что в ColdFusion мы можем опустить необязательные аргументы, добавив omit=true в cfinvokeargument. Но все же нам нужно добавить cfinvokeargument для каждого аргумента. Это не решает большую проблему.
  3. Поскольку веб-служба должна быть доступна с любой платформы или языка, omit=true хак может быть недоступен на других языках.

Итак, мой вопрос в том, как решать проблемы. Есть ли способ избавиться от необязательных аргументов при вызове веб-службы?


person Pankaj    schedule 03.09.2015    source источник
comment
Какой язык/метод вы используете для доступа к веб-сервису, кроме coldfusion?   -  person Bernhard Döbler    schedule 04.09.2015
comment
Он предназначен для использования с dot net и php.   -  person Pankaj    schedule 04.09.2015
comment
Что произошло, когда вы попытались получить к нему доступ из .net и/или php? Вы уверены, что это относится ко всем необязательным аргументам? Не уверен насчет CF11, но я помню эту проблему CF9, которая относилась к только необязательные числовые аргументы. Строки, например, можно опустить.   -  person Leigh    schedule 04.09.2015
comment
@Leigh Ли, я еще не тестировал его в других средах. Это был общий вопрос. И да, omit=true применяется ко всем необязательным аргументам в CF11. wikidocs.adobe.com/wiki/display/coldfusionen/cfinvokeargument.   -  person Pankaj    schedule 04.09.2015
comment
Хорошо бы это подтвердить. И да, omit=true применяется ко всем необязательным аргументам в CF11 Проблема была не в cfinvokeargument. Дело в том, что wsdl был сгенерирован таким образом, что допускал необязательные аргументы type=string, но не type=numeric.   -  person Leigh    schedule 04.09.2015
comment
У вас есть значения по умолчанию для необязательных аргументов?   -  person Dan Bracuk    schedule 04.09.2015
comment
Я немного поиграл. Я создал небольшой cfc с функцией с двумя cfarguments. Один обязательный, второй по желанию. Я вызвал его из скрипта cfm с помощью cfinvoke, и действительно, он работал только при наличии двух аргументов cfinvoke. Я этого не знал. Затем я провел тест с PHP, используя встроенный SoapClient. Это отлично работает, когда передается только обязательный аргумент. См. мои коды: gist.github.com/bardware/ 36385fe3abf870540f61   -  person Bernhard Döbler    schedule 06.09.2015
comment
Я добавил образец Visual Basic. Он работает, когда задан только один аргумент.   -  person Bernhard Döbler    schedule 06.09.2015