PHP curl转换为Coldfusion CHFTTP

时间:2019-04-22 20:19:21

标签: php coldfusion cfhttp activecampaign

我正在看activecampaign事件跟踪的示例

curl_setopt($curl, CURLOPT_URL, "https://trackcmp.net/event");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, array(
"actid" => "649587205",
"key" => "4a2f544b998d0107cd0341e799513c7eb94abde4",
"event" => "YOUR_EVENT",
"eventdata" => "ANY_DATA",
"visit" => json_encode(array(
        // If you have an email address, assign it here.
        "email" => "",
    )),
));

我知道我可以使用以下CFHTTP调用

<cfhttp url="https://trackcmp.net/event" method="POST">
<cfhttpparam type="FORMFIELD" name="actid" value="649587205">
<cfhttpparam type="FORMFIELD" name="key" value="4a2f544b998d0107cd0341e799513c7eb94abde4">
<cfhttpparam type="FORMFIELD" name="event" value="Watched">
<cfhttpparam type="FORMFIELD" name="eventdata" value="Video 101 - how to...">
<cfhttpparam type="FORMFIELD" name="visit" value="">

但是我该如何处理“访问”呼叫

"visit" => json_encode(array(
    // If you have an email address, assign it here.
    "email" => "",
)),

我只是对如何将其转换为CF标签逻辑感到困惑。 谢谢。 马特

2 个答案:

答案 0 :(得分:2)

最好从PHP manual开始,以了解这两个功能的作用。

array()

array()函数和array type的文档说明,在这种情况下,它创建了一个关联数组或CF结构。

  

PHP中的数组实际上是有序映射。地图是一种   将相关。

json_encode()

顾名思义,json_encode()以JSON格式将关联数组对象编码为字符串。

CF代码

CF等效项是创建一个结构。然后使用serializeJSON()将其转换为字符串。使用结构文字语法,这非常相似

 #serializeJSON( {"email":"abc@example.com"} )#

仅记得记住将键名括在引号中,以防止CF在序列化时将键名转换为大写。另外,PHP和CF之间的一大区别是,默认情况下,PHP结构是 ordered 。 CF结构不是。在这个简单的示例中,顺序无关紧要,但是在序列化时可以有所作为。如果需要需要有序结构,请参见以下主题:

"How to fix `remove default alphabetical ordering of SerializeJSON() `

答案 1 :(得分:1)

PHP在其Form字段中支持数组,而ColdFusion不支持。使用ColdFusion,PHP“数组”基本上是看起来像数组的字符串,因此您可以“伪造”数组。您的visit表单字段如下所示:

<cfhttpparam type="FORMFIELD" name="visit[email]" value="">
<cfhttpparam type="FORMFIELD" name="visit[whatever]" value="">