2

当您调用 web 服务的方法并希望省略具有默认值设置的非必需数字变量时,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>
4

1 回答 1

2

我对此的解决方案是不要忽略这个论点。传入默认值。我只是想记录一下,以防其他人遇到同样的错误。到目前为止,它只发生在数值上。

<cfinvoke
    webservice = "http://*.cfc?WSDL" 
    method="getFriendlyDay" 
    returnvariable="response"
    refreshWSDL="true"
>
        <cfinvokeargument name="dayNumber" value="0" >
</cfinvoke>

更新:

我相信这可能与此处概述的错误有关:

Coldfusion 将可选参数作为远程服务处理的方式是它允许调用客户端传入空值。在文档/文字或 rpc/编码的 WSDL 描述中,元素可以接受 null,除非它指定“nillable='false'”。Coldfusion 生成的 WSDL 不使用“nillable='false'”或“minOccurs='0'”,它们指示客户端它们必须包含参数并且可以传入空值。

然而问题是,当被试图显式传入 null 的客户端调用时,可选的“数字”或“布尔”参数类型将引发“非法参数异常”...

于 2014-02-21T03:29:52.253 回答