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>

Web サービス コンポーネント:

<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 がオプションの引数をリモート サービスとして処理する方法は、呼び出し元のクライアントが null 値を渡すことを許可することです。document/literal または rpc/encoded WSDL 記述では、"nillable='false'" を指定しない限り、要素は null を受け入れることができます。Coldfusion から生成された WSDL は、「nillable='false'」または「minOccurs='0'」を使用しません。これらは、クライアントにパラメータを含める必要があり、null 値を渡してもよいことを指示します。

ただし、問題は、オプションの「数値」または「ブール」引数タイプが、null を明示的に渡そうとするクライアントによって呼び出されると、「不正な引数例外」をスローすることです...

于 2014-02-21T03:29:52.253 に答える