Web services 如何解决使用WWEx webservice时出现的错误?
Web services 如何解决使用WWEx webservice时出现的错误?,web-services,coldfusion,shipping,Web Services,Coldfusion,Shipping,我正在尝试使用webservice从webserivce获取运费”http://www.wwexship.com/webServices/services/FreightShipmentQuote?wsdl并且它给出了一个错误“找不到参数为{….}的Web服务操作GetShipmentSimpleNote”。鉴于我正在提供有效的loginid、密码、licensekey、帐号和其他必需的详细信息。 请建议我如何使用此Web服务? wsdl文件- 调用webservice的代码是- ret
我正在尝试使用webservice从webserivce获取运费”http://www.wwexship.com/webServices/services/FreightShipmentQuote?wsdl并且它给出了一个错误“找不到参数为{….}的Web服务操作GetShipmentSimpleNote”。鉴于我正在提供有效的loginid、密码、licensekey、帐号和其他必需的详细信息。
请建议我如何使用此Web服务?
wsdl文件-
调用webservice的代码是-
retTemp:#retTemp#
retTemp.ResponseStatusCode:#retTemp.ResponseStatusCode#
retTemp.responseStatusDescription:#retTemp.responseStatusDescription#
retTemp.errorDescriptions:#retTemp.errorDescriptions[1]#
在我看来,您正在传递的弧与预期弧不匹配。以下是我要尝试的两件事:
1:使用foo=CreateObject(“webservice”http://server/wsdl"); 然后转储对象。您应该在上面看到方法和参数,它们可能与上面的参数不同
2:下载并安装。然后启动它并将proxyServer=“localhost”proxyPort=“8888”添加到您的通话中。ColdFusion现在将通过Fiddler路由所有web服务请求,您可以检查向远程服务器传递的内容和从远程服务器传递的内容。对于这类事情来说,这是一种非常强大的技术
我认为Chris是对的,你需要传递一个结构作为参数。我可以使用以下代码调用服务:
<cfoutput>
<cfset shipService = CreateObject("webservice","http://www.wwexship.com/webServices/services/FreightShipmentQuote?wsdl")>
<cfdump var="#shipService#">
<cfset response=shipService.getShipmentSimpleQuote({})>
<cfdump var="#response#">
<cfdump var="#response.getResponseStatusCode()#">
<cfdump var="#response.getResponseStatusDescription()#">
服务返回失败代码,但它确实执行了。WSDL将FreightShipmentQuoteRequest的所有成员定义为Nillalla,这就是我的代码工作的原因,但是当您正确实现is时,可能需要为lineItems元素使用一个结构数组。我无法测试此解决方案,因为我无法登录到服务,不过,GetShipmentSimpleNote似乎只接受一个名为“freightShipmentQuoteRequest”的结构参数,其中包含您试图作为参数传递的键
<cfinvoke
webservice="http:.....FreightShipmentQuote?wsdl"
method="getShipmentSimpleQuote"
returnvariable="aTemp">
<cfinvokeargument name="freightShipmentQuoteRequest" value="#{
"senderCity" = "Freeport",
"senderState" = "NY",
....
}#" />
</cfinvoke>
如果这不起作用,你可以尝试预先退出所有字段“freightShipmentQuoteRequest.”
我在wsdl中看不到对登录参数的任何引用。请显示您尝试的代码以及更完整的错误消息。除非我错过了它,否则我在webservice定义中看不到参数loginId/password/licenseKey。也许你的问题在于身份验证?你能链接到你正在关注的任何文档吗。正如Cyril指出的,WSDL中不存在登录/许可信息,因此他们可能使用http/basic身份验证或其他方式进行身份验证you@barnyr:我已使用wsdl详细信息更新了我的问题。请在上述问题详细信息中查找wsdl详细信息。
<cfoutput>
<cfset shipService = CreateObject("webservice","http://www.wwexship.com/webServices/services/FreightShipmentQuote?wsdl")>
<cfdump var="#shipService#">
<cfset response=shipService.getShipmentSimpleQuote({})>
<cfdump var="#response#">
<cfdump var="#response.getResponseStatusCode()#">
<cfdump var="#response.getResponseStatusDescription()#">
<cfinvoke
webservice="http:.....FreightShipmentQuote?wsdl"
method="getShipmentSimpleQuote"
returnvariable="aTemp">
<cfinvokeargument name="freightShipmentQuoteRequest" value="#{
"senderCity" = "Freeport",
"senderState" = "NY",
....
}#" />
</cfinvoke>
<cfinvokeargument name="freightShipmentQuoteRequest.senderCity" value="Freeport"/>