【问题标题】:xml-rpc with coldfusion - how to pass in parameters?带有coldfusion的xml-rpc - 如何传入参数?
【发布时间】:2016-01-12 20:10:02
【问题描述】:

我正在尝试从 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>

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

不能使用字符串 (myVIP...) 作为 HASH ref 而“strict refs”在 在 /home/...

使用

所以我不明白的是如何将我在 {parameter1=>'value1',parameter2=>'value2'} 的 perl 中看到的符号转换为我正在传递给 CFML2XMLRPC。

【问题讨论】:

  • 这篇文章的日期是 2008 年 8 月 30 日。我想知道 SOAP、REST 或普通 AJAX 是否会是更好的方法
  • API 都是 XML-RPC 方法,所以我别无选择,对吗?

标签: perl coldfusion xml-rpc


【解决方案1】:

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

<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

【讨论】:

    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    相关资源
    最近更新 更多