在阅读了@Leigh 的评论和一点 Google'ing 之后,我发现了以下关于Debugging ColdFusion Webservices的文章。对于这个问题(以及@Leigh 所指的内容)特别感兴趣的是编号 2 下的项目符号项(朝向页面底部)。如果引用的页面被删除,我将在此处包含该信息。
如果您有一段时间使用或作为参数类型java.lang.IllegalArgumentException: argument type mismatch
调用 .Net Web 服务,那么很可能您没有正确定义数据类型。和会导致你相信.Net 期待一个数组。但请记住 ColdFusion 数组与 .Net 数组不同。如果您仔细查看 wsdl,您会注意到被定义为 complexType 名称。ArrayOfInt
ArrayOfString
ArrayOfInt
ArrayOfString
ArrayOfInt
<s:complexType name="ArrayOfInt">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="int" type="s:int" />
</s:sequence>
</s:complexType>
CF 中的复杂类型映射到结构。此外,您会注意到这个复杂类型有一个 name="int" 的元素。现在,当 java 查看 wsdl 并创建存根类文件时,它会将这个元素重命名为“_int”。我的猜测是这样做是因为“int”是 Java 中的保留字,也是本机数据类型。那么这意味着要成功调用.Net webservice,你需要:
<cfset objGroupIds = StructNew()>
<cfset objGroupIds._int = ListToArray("627303")>
<cfset callResult = myObj.getUser(objGroupIds)>