【发布时间】:2009-02-05 14:23:33
【问题描述】:
我正在开发一个服务调用脚本,如下所示:
<cfinvoke webservice="#ServiceURL#" method="AddCustomer" returnvariable="ResponseData" argumentcollection="#stAguments#">
<cfinvokeargument name="api_key" value="#ServiceKey#" />
</cfinvoke>
显然,在此调用之前填充了 stAguments 结构。 想象一下,您忘记将参数之一添加到此容器中或使用了错误的参数类型,例如创建了无效请求。 ColdFusion 抛出可以捕获但不能(不是字面意思)读取的异常:
*Web service operation AddCustomer with parameters {postcode={12345},org_name={Terms test 7.79661762856},fax={},html={1},addr1={address1},firstname={sergey},city={Austin},country={},taxable={},notify={1},lastname={galashyn},addr2={},ssn={},api_key={8FE9AD0BCF2382D92A1080DB3AA62DB9},taxrate={0},terms={Net 15},active={},state={},salutation={Mr.},password={123},account_manager={1}} cannot be found.*
手动一一检查所有这些参数让我大吃一惊。这就是问题所在。
也许有人会使用一些技术来简化此操作。
我什至考虑过某种解析器来自动进行这种比较。
将欣赏任何想法和想法。
谢谢。
附:对不起我的英语——不是我的母语。请问我是不是写的不够清楚。
编辑:
澄清一下。问题不在于访问服务。我是它的所有者,我绝对知道每种方法的所有参数及其类型。
问题仅在于创建请求时读取错误消息 -- 填充方法参数容器。
例如,方法有 10 个参数,但我不小心添加了 9 个 - CF 的本地实例抛出错误,即找不到方法并显示我已传递的字段的原始列表(上面列出的)。我需要将它们与方法参数一一进行比较,以找到我错过的内容。
真的,这是一个可用性和节省时间的问题。
【问题讨论】:
-
网络服务是否使用复杂的输入参数?
-
@Tomalak 不,只有简单的值。但这不是问题。请参阅帖子编辑。
-
@Sergii Galashyn:如果您在某处发布 WSDL,我想我可以创建一个小函数将其解析为合适的 CF 结构。
-
如果真的需要,我可以自己制作。对于这个问题,想法比实施更重要。感谢任何方式:)
-
好。我只是想我会提供我的 XPath-fu,以防你的 XPath-fu 很弱。 ;-)
标签: web-services coldfusion error-handling wsdl