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"/>