2012-06-28 63 views
0

這是捲曲的代碼,在命令行工作:嫋嫋不發送POST數據,但在正常工作終端

$ curl -F [email protected]/path/to/index.html -u [email protected] -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命令在終端工作,但上面的curl命令用php編寫,返回錯誤:返回錯誤:

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

什麼是解決方案?

感謝

回答

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. $data正在json_encode d,所以捲曲不會看到file屬性,它會作爲字符串發送,而不是讀取文件 - 這就是爲什麼我把file直接放在POSTFIELDS
  2. 變量$data不會導致它被作爲data=...發送,而是作爲單個字符串發送(如XML中的POST)。
+0

工作!謝謝 – user1434480

+0

非常感謝您的清晰解釋! – user1434480

相關問題