2

cfinvokeparamタイプがに設定されているSOAPWebサービスの場合、次tns:ArrayOfStringのようになります。

Webサービスの呼び出しを実行できませんHello。Webサービス操作の呼び出し時に返される障害は次のとおりです。''java.lang.IlligalArgumentException:引数タイプの不一致

タイプのWebサービスを呼び出す方法はtns:ArrayOfString

http://forums.adobe.com/message/4337438によると

これは機能します:

<cfscript>
     root = structnew();
     text = arraynew(1);
     text[1] = "Hello";
     text[2] = "world";
     root.string=text;
</cfscript>

<cfinvoke method="Hello"
  webservice="http://localhost/Service1.asmx?wsdl"
  returnvariable="response">
     <cfinvokeargument name="array" value=#root#/>
</cfinvoke>

今の問題は、なぜこれが機能するのかということです。

4

1 に答える 1

2

参照したスレッドで述べたように、の直接マッピングはありませArrayOfString。したがって、他の複合型と同様に、本質的に構造体として扱われます。wsdl を見ると、ArrayOfStringという名前の単一のキーが含まれておりstring、その値は の配列ですtype="s:string"

<s:complexType name="ArrayOfString">
   <s:sequence>
     <s:element minOccurs="0" maxOccurs="unbounded" 
           name="string" nillable="true" type="s:string" /> 
   </s:sequence>
</s:complexType>

したがって、CF コードは正しいキー名 ( string) と値の型 (文字列の配列) を持つ構造体を作成するため、機能します。

    root.string = [ arrayOfStrings ];
于 2012-12-18T23:26:24.470 に答える