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 に答える