0

これは、コマンド ラインで動作する curl コードです。

  $ curl -F file=@/path/to/index.html -u lslkdfmkls@gmail.com -F 'data={"title":"API V1  App","package":"com.alunny.apiv1","version":"0.1.0","create_method":"file"}' https://build.phonegap.com/api/v1/apps

これは私のコードです:

$ch = curl_init();

$data = array("title"=>"sampele title","package"=>"com.fsdlfn.sdfknsdj","version"=>"0.1.0","create_method"=>"file","file"=>"@/path/myfolder/myfile.zip");

$jsdata = json_encode($data);

curl_setopt($ch, CURLOPT_URL, 'https://build.phonegap.com/api/v1/app?auth_token='.$token); //got this token already, so using that here .
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsdata);

echo curl_exec($ch);

curl コマンドはターミナルで動作しますが、php で記述された上記の curl コマンドはエラーを返します。

{"error":"no create_method specified: file, remote_repo, or hosted_repo"}

解決策は何ですか?

ありがとう

4

1 に答える 1

0

これを試して:

$ch = curl_init();

$data = array("title"=>"sampele title","package"=>"com.fsdlfn.sdfknsdj","version"=>"0.1.0","create_method"=>"file");

$jsdata = json_encode($data);

curl_setopt($ch, CURLOPT_URL, 'https://build.phonegap.com/api/v1/app?auth_token='.$token); //got this token already, so using that here .
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('data' => $jsdata, 'file'=>'@/path/myfolder/myfile.zip'));

echo curl_exec($ch);

修正を行った理由は次のとおりです。

  1. $datajson_encodedされているため、cURLはfile属性を認識せず、ファイルを読み取るのではなく、文字列として送信します-これが、私がfile直接POSTFIELDS
  2. 変数は、それを送信するのではなく、単一の文字列$dataとして送信します ( ing XML のように)。data=...POST
于 2012-06-28T22:39:33.700 に答える