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. Благодарю. Matt
2 ответа
Лучше всего начать с руководства по PHP, чтобы выяснить, что делают эти две функции.
Массив ()
Документация для функции array() и типа массива объясняет, что в этом контексте она создает ассоциативный массив или, другими словами, структуру CF.
Массив в PHP на самом деле является упорядоченной картой. Карта - это тип, который связывает значения сключами.
json_encode ()
Как следует из названия, json_encode () кодирует объект ассоциативного массива в виде строки в формате JSON.
Код CF
Эквивалент CF предназначен для создания структуры. Затем используйте serializeJSON(), чтобы преобразовать его в строку. Используя синтаксис литерала структуры, он очень похож
#serializeJSON( {"email":"abc@example.com"} )#
Просто не забудьте заключить имена ключей в кавычки, чтобы CF не преобразовывал имена ключей в верхний регистр при сериализации. Кроме того, одно большое различие между PHP и CF состоит в том, что структуры PHP упорядочены по умолчанию. CF структуры не являются. В этом простом примере порядок не должен иметь значения, но он может иметь значение при сериализации. Если вам нужна упорядоченная структура, посмотрите эту ветку:
"Как исправить` удалить алфавитный порядок по умолчанию для SerializeJSON() `
PHP поддерживает массивы в полях формы, а ColdFusion - нет. В ColdFusion PHP-массивы - это в основном строки, которые выглядят и действуют как массивы, поэтому вы можете "подделать" массив. Ваш visit
поле формы будет выглядеть так:
<cfhttpparam type="FORMFIELD" name="visit[email]" value="">
<cfhttpparam type="FORMFIELD" name="visit[whatever]" value="">