袅袅不发送POST数据,但在正常工作终端

问题描述:

这是卷曲的代码,在命令行工作:袅袅不发送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"} 

什么是解决方案?

感谢

试试这个:

$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