0

任何人都可以将这个在命令行中工作的 curl 命令转换为 php 代码:

$ curl -u username@gmail.com -X POST -d "" https://build.phonegap.com/token

我试过这段代码但没有用:

$target_url = "https://USERNAME@gmail.com:PASSWORD@build.phonegap.com/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代码?

谢谢

4

1 回答 1

1

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

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

...之后curl_init()和之前curl_exec()让 cURL 跟随重定向到正确的位置。

-X选项用于POST在您已镜像的原始命令字符串中指定方法curl_setopt($ch, CURLOPT_POST, 1);

编辑

试试这个代码:

$username = "USERNAME@gmail.com";
$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;
于 2012-06-28T12:25:11.700 回答