2012-12-18 38 views
2

如果一個cfinvoke與參數類型集來tns:ArrayOfString SOAP Web服務,一會就搞定:應該在ColdFusion中使用什麼映射到SOAP類型tns:ArrayOfString?

無法執行的Web服務調用你好。 'java.lang.IlligalArgumentException:參數類型不匹配

如何與tns:ArrayOfString類型調用Web服務時 調用Web服務操作故障恢復?

根據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> 

現在的問題是,爲什麼這項工作?

回答

2

就像我在你引用的主題中提到的那樣,有no direct mappingArrayOfString。所以它基本上被當作一個結構,就像任何其他複雜類型一樣。如果你看一下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 ]; 
相關問題