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...

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