在curl中发布标题为的数据在php中不起作用?

在curl中发布标题为的数据在php中不起作用?,php,post,box-api,Php,Post,Box Api,我正在尝试使用PHP创建box应用程序用户。createuser的curl如下所示,它正在终端上工作 curl https://api.box.com/2.0/users \ -H "Authorization: Bearer <Access token>" \ -d '{"name": "New User", "is_platform_access_only": true}' \ -X POST 下面一个我已经试过了 $developer_token = "TOKEN" ; $a

我正在尝试使用PHP创建box应用程序用户。createuser的curl如下所示,它正在终端上工作

curl https://api.box.com/2.0/users \
-H "Authorization: Bearer <Access token>" \
-d '{"name": "New User", "is_platform_access_only": true}' \
-X POST
下面一个我已经试过了

$developer_token = "TOKEN" ;
$access_token_url = "https://api.box.com/2.0/users";

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $access_token_url);

//Adding Parameters
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
    'name'=>'NEW USER', 
    'is_platform_access_only'=>'true',
     ));

//Adding Header 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer '.$developer_token
     ));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$response1 = curl_exec($ch);

如果删除Post参数,并仅使用标题运行,则会给出用户的结果。但是post会抛出错误。

我在Perl代码中也提出了同样的问题。在这里,我得到了用户
@melpomene
的答案

我们应该将数据编码为JSON。它正在工作, 那么最后的代码是

$data = array(name=>SOMENAME,is_platform_access_only=>true);
$data = json_encode($data);
$header = array("Authorization: Bearer <TOKEN>");
$ch = curl_init("https://api.box.com/2.0/users/");
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response1 = curl_exec($ch);
curl_close($ch);
$data=array(name=>SOMENAME,is\u platform\u access\u only=>true);
$data=json_encode($data);
$header=数组(“授权:承载”);
$ch=curl_init(“https://api.box.com/2.0/users/");
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,“POST”);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$response1=curl\u exec($ch);
卷曲关闭($ch);
$data = array(name=>SOMENAME,is_platform_access_only=>true);
$data = json_encode($data);
$header = array("Authorization: Bearer <TOKEN>");
$ch = curl_init("https://api.box.com/2.0/users/");
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response1 = curl_exec($ch);
curl_close($ch);