PHP - curl命令行落实到PHP,尝试,但得到错误

问题描述:

任何人都可以转换这个curl命令,在命令行致力于PHP代码:PHP - curl命令行落实到PHP,尝试,但得到错误

$ curl -u [email protected] -X POST -d "" https://build.phonegap.com/token 

我想这个代码,但没有工作:

$target_url = "https://[email protected]:[email protected]/token" 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$target_url); 
curl_setopt($ch, CURLOPT_POST,1); 

$result=curl_exec ($ch); 
curl_close ($ch); 
echo $result; 

当我执行上面的代码,我得到的错误:

301 Moved 
The document has moved here(link to gmail.com). 

但是,如果我使用的通讯并在命令行中,它工作正常。我在哪里错了?

此外,请告诉我“-X”是什么意思,以及如何将其转换为php代码?

由于

+1

可能是错的,但不应该在电子邮件@是URL编码或什么? –

301是重定向响应代码。加入这一行:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 

... curl_init()curl_exec()之前有卷曲跟随重定向到正确的位置。

-X选项用于在原来的命令字符串,你有curl_setopt($ch, CURLOPT_POST, 1);

编辑镜像到指定POST方法

试试这个代码:

$username = "[email protected]"; 
$password = "PASSWORD"; 
$target_url = "https://build.phonegap.com/token" 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $target_url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_setopt($ch, CURLOPT_POST, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, ''); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 

$result = curl_exec($ch); 
curl_close ($ch); 
echo $result; 
+0

好吧,但它是重定向,但它不应该重定向,它应该返回响应,因为我已经给出了用户名和密码。 curl命令直接返回响应,但为什么这个php代码重定向到gmail.com? – user1434480

+0

也许它期待着一个'Content-Type:application/x-www-form-urlencoded',我想这是命令行会发送的内容,但是除非指定了一些数据,否则libcurl可能不会。见上面的编辑。 – DaveRandom

+0

非常棒,工作。你可以告诉我如何能够说他们期待内容类型:application/x-www-form-urlencoded这个? – user1434480