Php curl到cfhttp转换

Php curl到cfhttp转换,php,curl,coldfusion,cfhttp,Php,Curl,Coldfusion,Cfhttp,我试图将一个PHP脚本翻译成ColdFusion,但没有成功。谁能帮帮我吗 原始PHP脚本(用于unifi wlan manager api): $unifiServer=”https://xxx.xxx.xxx.xxx:xxxx"; $unifiUser=“xxxxx”; $unifiPass=“xxxxx”; //开始注册 $ch=curl_init(); //我们正在发布数据 curl_setopt($ch,CURLOPT_POST,TRUE); //设置cookies $cookie_f

我试图将一个PHP脚本翻译成ColdFusion,但没有成功。谁能帮帮我吗

原始PHP脚本(用于unifi wlan manager api):

$unifiServer=”https://xxx.xxx.xxx.xxx:xxxx";
$unifiUser=“xxxxx”;
$unifiPass=“xxxxx”;
//开始注册
$ch=curl_init();
//我们正在发布数据
curl_setopt($ch,CURLOPT_POST,TRUE);
//设置cookies
$cookie_file=“/tmp/unifi_cookie”;
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);
//允许自签名证书
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
//仅强制SSL1
卷曲设置($ch,卷曲设置,1);
//登录到UniFi控制器
curl_setopt($ch,CURLOPT_URL,“$unifiServer/api/login”);
$data=json_编码(数组(“用户名”=>$unifiUser,“密码”=>$unifiPass));
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-Type:application/json'));
//发送登录命令
curl_exec($ch);
ColdFusion cfhttp翻译:


cfhttp失败,原因是:

“HTTP/1.1 400错误请求服务器”
消息“:“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 })>
<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#">

旋度的有效载荷转化为

<cfset unifiUser = "xxxxx">
<cfset unifiPass = "xxxxx">
<cfset data      = serializeJSON({ "username" = unifiUser, "password" = unifiPass })>
<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,则必须使用“分号<代码> > > /p>> p>将它们连接在<代码> CookIEx内容< /> >中。如果CFHTTP给您带来头痛(通常在处理SSL/HTTPS时),请考虑从命令行调用CURL,使用CFExctual.</P> 例如:

<cfexecute timeout="10" name="curl" variable="myVar" arguments="https://google.com"></cfexecute>


尝试在请求正文中发送
用户名
密码
,而不是
formfield
,因为数据是url编码的,从php代码片段看,似乎需要json编码。太好了,这很有效!非常感谢您的翻译Alex!谢谢Alex。我收到一个cf错误“文件或目录/tmp/unifi\u Cookie不存在“原因可能是什么?错误告诉您:cookie文件不存在。您需要描述cookie/信息的实际来源。您可能需要存储初始请求的响应,并将数据用于后续请求。请打开一个新问题,详细描述您的工作流程。我找到了解决方案。当我使用