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代码?
由于
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;
好吧,但它是重定向,但它不应该重定向,它应该返回响应,因为我已经给出了用户名和密码。 curl命令直接返回响应,但为什么这个php代码重定向到gmail.com? – user1434480
也许它期待着一个'Content-Type:application/x-www-form-urlencoded',我想这是命令行会发送的内容,但是除非指定了一些数据,否则libcurl可能不会。见上面的编辑。 – DaveRandom
非常棒,工作。你可以告诉我如何能够说他们期待内容类型:application/x-www-form-urlencoded这个? – user1434480
可能是错的,但不应该在电子邮件@是URL编码或什么? –