在ColdFusion中无法识别WSDL GUID数据类型?

时间:2014-01-31 02:51:49

标签: web-services soap coldfusion wsdl coldfusion-10

我正在尝试使用ColdFusion中的以下Web服务:

http://xserv.dell.com/services/assetservice.asmx

我应该能够使用以下代码使用Web服务:

<cfscript> 
    params = structNew(); 
    params.guid = "11111111-1111-1111-1111-111111111111"; 
    params.applicationName = "test"; 
    params.serviceTags = "JLJMHX1"; 

    ws = createObject("webservice", "http://xserv.dell.com/services/assetservice.asmx?wsdl"); 

    writeDump(ws)

    ws.GetAssetInformation(params); 
</cfscript> 

转储WSDL信息(ws)的结果表明GetAssetInformation方法具有以下签名:

getAssetInformation(com.microsoft.wsdl.types.Guid, java.lang.String, java.lang.String)

每次服务调用错误,说:

处理请求时出现“

”错误 无法找到带参数{11111111-1111-1111-1111-111111111111,test,JLJMHX1}的Web服务操作GetAssetInformation。“

我确信这是由于期望“com.microsoft.wsdl.types.Guid”数据类型的方法,但我如何通过ColdFusion传递它?

我可以使用相同的数据在Fiddler中创建和运行请求,并在没有问题的情况下得到回复,因此我在ColdFusion中做错了。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:3)

该方法需要一个guid和两个字符串。你正在传递一个结构。分别传递参数。

ColdFusion 10默认还为Web服务引入了Axis 2。对于某些Web服务,您需要使用可在ColdFusion Administrator中启用的Axis 1。您还需要刷新Web服务。

createObject("webservice", theURL, {refreshWSDL=true,wsVersion=1})

答案 1 :(得分:0)

我按照这篇文章中的说明找到了答案:

Consume SOAP web service having complex types

感谢大家的帮助!