袅袅不发送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);
这也是为什么我做了修正:
-
$data
正在json_encode
d,所以卷曲不会看到file
属性,它会作为字符串发送,而不是读取文件 - 这就是为什么我把file
直接放在POSTFIELDS
- 变量
$data
不会导致它被作为data=...
发送,而是作为单个字符串发送(如XML中的POST
)。
工作!谢谢 – user1434480
非常感谢您的清晰解释! – user1434480