xml-rpc with coldfusion - 如何传入参数?

xml-rpc with coldfusion - how to pass in parameters?

我正在尝试从 coldfusion 服务器进行 xml-rpc 调用。我发现这个 xml-rpc cfc(谢谢,Brad Wood!)为 cfhttp 调用格式化 xml,但我正在努力解释如何传递调用名称以外的任何参数。

这是使用 perl

的 api 文档

这是我的冷融合代码

<cfobject component="xmlrpc" name="c">
<cfset arr = arraynew(1)>
<cfset arrayappend(arr,"service.show")>
<cfset arrayappend(arr,myVIP)>
<cfset arrayappend(arr,myIP)>
<cfset arrayappend(arr,myPort)>
<cfset myxml =  c.CFML2XMLRPC(arr,"call")>
<cfhttp url="#apiUrl#" method="POST">
<cfhttpparam name="request_body" value="#myxml#" type="XML">
</cfhttp>

我不断收到的错误消息是:

Can't use string (myVIP...) as a HASH ref while "strict refs" in use at /home/...

所以我不明白的是如何翻译我在 perl 中看到的符号 {parameter1=>'value1',parameter2=>'value2'} 到我传递给 CFML2XMLRPC 的数组。

我想出来了,现在看起来很明显......你必须使用结构来保存参数并将其传递到方法字符串之后的数组中。

<cfset arr = arraynew(1)>
<cfset arrayappend(arr,"service.show")>
<cfset paramObj = structnew()>
<cfset paramObj['vip'] = myVIP>
<cfset paramObj['ip'] = myIP>
<cfset paramObj['port'] = myPort>
<cfset paramObj['show'] = "status/state">
<cfset arrayappend(arr,paramObj)>

我发现 jquery xml-rpc 文档有助于理解 xml 的实际格式。

注:

的表示法
<cfset paramObj['ip'] = myIP>

对比

<cfset paramObj.ip = myIP>

很重要,因为后者将导致 xmlrpc.cfc 中的参数名称全部大写。 (感谢 comment by Dave Merrill on this post