PHP curl转换为coldfusion chfttp

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP curl转换为coldfusion chfttp相关的知识,希望对你有一定的参考价值。

我正在看这个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标记逻辑。谢谢。马特

答案

最好从PHP manual开始,弄清楚这两个功能正在做什么。

阵列()

array()函数和array type的文档解释说,在这种情况下,它创建了一个关联数组,换句话说,就是CF结构。

php中的数组实际上是一个有序映射。映射是将值与键关联的类型。

json_encode()

正如名称所暗示的那样,json_encode()将关联数组对象编码为JSON格式的字符串。

CF代码

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

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

只需记住在引号中包含键名以防止CF在序列化时将键名转换为大写。此外,PHP和CF之间的一个重要区别是PHP结构默认排序。 CF结构不是。在这个简单的例子中,顺序无关紧要,但在序列化时可能会有所不同。如果确实需要有序结构,请参阅以下主题:

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

另一答案

PHP支持Form表单中的数组,而ColdFusion则不支持。使用ColdFusion,PHP“数组”基本上是字符串,其外观和行为类似于数组,因此您可以“伪造”数组。您的visit表单字段将如下所示:

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

以上是关于PHP curl转换为coldfusion chfttp的主要内容,如果未能解决你的问题,请参考以下文章

将 php 转换为 c#,将 curl 转换为 .net [关闭]

cloudflare api 将 curl 转换为 php curl 并发送 CNAME 更新

ColdFusion 转换为数字

如何在 ColdFusion 中将查询列转换为列表

防止 ColdFusion 使用 SerializeJSON 将字符串转换为数字

如何将此 cURL 代码转换为 PHP(PayPal API)