Coldfusion WSDL IllegalArgumentException на cfinvokeargument
Когда вы вызываете метод веб-службы и хотите опустить необязательную числовую переменную, для которой установлено значение по умолчанию, coldfusion выдаст следующую ошибку:
The fault returned when invoking the web service operation is:<br>
<pre>'' java.lang.IllegalArgumentException</pre>
Пример:
<cfinvoke
webservice = "http://*.cfc?WSDL"
method="getFriendlyDay"
returnvariable="response"
refreshWSDL="true"
>
<cfinvokeargument name="dayNumber" omit="true"/>
</cfinvoke>
компонент веб-сервиса:
<cffunction name="getFriendlyDay" access="remote" returntype="any" output="no" description="get a friendly date from a number">
<cfargument name="dayNumber" type="numeric" required="no" default="0">
...
</cffunction>
1 ответ
Мое решение этого состоит в том, чтобы просто не опускать аргумент. Передайте значение по умолчанию. Я просто хотел записать это на тот случай, если кто-то другой получит такую же ошибку. Пока что это произошло только по числовым значениям.
<cfinvoke
webservice = "http://*.cfc?WSDL"
method="getFriendlyDay"
returnvariable="response"
refreshWSDL="true"
>
<cfinvokeargument name="dayNumber" value="0" >
</cfinvoke>
Обновить:
Я считаю, что это, вероятно, связано с ошибкой, изложенной здесь:
Способ, которым Coldfusion обрабатывает необязательные аргументы в качестве удаленной службы, заключается в том, что он позволяет вызывающему клиенту передавать нулевое значение. В описании WSDL документа / литерала или rpc / закодированный элемент может принимать значение null, если только он не указывает "nillable='false'". Сгенерированные WSDL из Coldfusion не используют "nillable = 'false'" или "minOccurs='0'", которые инструктируют клиента, что они должны включить параметр и что можно передавать нулевое значение.
Проблема, однако, заключается в том, что необязательные типы аргументов "numeric" или "boolean" будут вызывать "исключение недопустимого аргумента" при вызове клиентом, который пытается явно передать значение null...