curl 到 cfhttp 翻译
curl to cfhttp translation
我正在尝试将 PHP 脚本翻译成 ColdFusion 但没有成功。有人可以帮我吗?
原始PHP脚本(用于unifi wlan管理器api):
$unifiServer = "https://xxx.xxx.xxx.xxx:xxxx";
$unifiUser = "xxxxx";
$unifiPass = "xxxxx";
// Start Curl for login
$ch = curl_init();
// We are posting data
curl_setopt($ch, CURLOPT_POST, TRUE);
// Set up cookies
$cookie_file = "/tmp/unifi_cookie";
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
// Allow Self Signed Certs
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
// Force SSL1 only
curl_setopt($ch, CURLOPT_SSLVERSION, 1);
// Login to the UniFi controller
curl_setopt($ch, CURLOPT_URL, "$unifiServer/api/login");
$data = json_encode(array("username" => $unifiUser,"password" => $unifiPass));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
// send login command
curl_exec ($ch);
ColdFusion cfhttp 翻译:
<cfhttp url="https://xxx.xxx.xxx.xxx:8443/api/login" method="POST" result="test">
<cfhttpparam type = "formField" name = "username" value="xxxxxxx">
<cfhttpparam type = "formField" name = "password" value="xxxxxxxx">
<cfhttpparam type="header" name="Content-Type" value="application/json">
</cfhttp>
<cfdump var="#test#">
cfhttp 失败:
"HTTP/1.1 400 Bad Request Server"
msg" : "api.err.Invalid" , "rc"
证书库中安装了 SSL 证书。
$unifiUser = "xxxxx";
$unifiPass = "xxxxx";
$data = json_encode(array("username" => $unifiUser,"password" => $unifiPass));
翻译成
<cfset unifiUser = "xxxxx">
<cfset unifiPass = "xxxxx">
<cfset data = serializeJSON({ "username" = unifiUser, "password" = unifiPass })>
并且您的 curl 有效负载转换为
<cfhttp url="https://xxx.xxx.xxx.xxx:8443/api/login" method="POST" result="test">
<cfhttpparam type="body" value="#data#">
<cfhttpparam type="header" name="Content-Type" value="application/json">
</cfhttp>
<cfdump var="#test#">
发送 cookie:
<cfset cookie_file = "/tmp/unifi_cookie">
<cfset cookie_content = fileRead(cookie_file)>
并添加
<cfhttpparam type="header" name="Cookie" value="#cookie_content#">
如果您需要发送多个 cookie,则必须使用分号 ;
.
将它们连接在 cookie_content
中
如果 CFHTTP 让您头疼(在处理 SSL/HTTPS 时经常会遇到这种情况),请考虑使用 CFEXECUTE 从命令行调用 CURL。
例如:
<cfexecute timeout="10" name="curl" variable="myVar" arguments="https://google.com"></cfexecute>
我正在尝试将 PHP 脚本翻译成 ColdFusion 但没有成功。有人可以帮我吗?
原始PHP脚本(用于unifi wlan管理器api):
$unifiServer = "https://xxx.xxx.xxx.xxx:xxxx";
$unifiUser = "xxxxx";
$unifiPass = "xxxxx";
// Start Curl for login
$ch = curl_init();
// We are posting data
curl_setopt($ch, CURLOPT_POST, TRUE);
// Set up cookies
$cookie_file = "/tmp/unifi_cookie";
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
// Allow Self Signed Certs
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
// Force SSL1 only
curl_setopt($ch, CURLOPT_SSLVERSION, 1);
// Login to the UniFi controller
curl_setopt($ch, CURLOPT_URL, "$unifiServer/api/login");
$data = json_encode(array("username" => $unifiUser,"password" => $unifiPass));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
// send login command
curl_exec ($ch);
ColdFusion cfhttp 翻译:
<cfhttp url="https://xxx.xxx.xxx.xxx:8443/api/login" method="POST" result="test">
<cfhttpparam type = "formField" name = "username" value="xxxxxxx">
<cfhttpparam type = "formField" name = "password" value="xxxxxxxx">
<cfhttpparam type="header" name="Content-Type" value="application/json">
</cfhttp>
<cfdump var="#test#">
cfhttp 失败:
"HTTP/1.1 400 Bad Request Server"
msg" : "api.err.Invalid" , "rc"
证书库中安装了 SSL 证书。
$unifiUser = "xxxxx";
$unifiPass = "xxxxx";
$data = json_encode(array("username" => $unifiUser,"password" => $unifiPass));
翻译成
<cfset unifiUser = "xxxxx">
<cfset unifiPass = "xxxxx">
<cfset data = serializeJSON({ "username" = unifiUser, "password" = unifiPass })>
并且您的 curl 有效负载转换为
<cfhttp url="https://xxx.xxx.xxx.xxx:8443/api/login" method="POST" result="test">
<cfhttpparam type="body" value="#data#">
<cfhttpparam type="header" name="Content-Type" value="application/json">
</cfhttp>
<cfdump var="#test#">
发送 cookie:
<cfset cookie_file = "/tmp/unifi_cookie">
<cfset cookie_content = fileRead(cookie_file)>
并添加
<cfhttpparam type="header" name="Cookie" value="#cookie_content#">
如果您需要发送多个 cookie,则必须使用分号 ;
.
cookie_content
中
如果 CFHTTP 让您头疼(在处理 SSL/HTTPS 时经常会遇到这种情况),请考虑使用 CFEXECUTE 从命令行调用 CURL。
例如:
<cfexecute timeout="10" name="curl" variable="myVar" arguments="https://google.com"></cfexecute>