PUT通过CURL请求

时间:2015-10-05 12:50:25

标签: php curl put

我试图制作一个CURL PUT REQUEST,我的代码如下:

public function assignProfile($token, $organizationId, $profileId)
    {
        //define enviroment and path
        $host = enviroment;
        $path = "/admin/organizations/".$organizationId."/users";       

        $data_string = '["'.$profileId.'"]';        

        // set up the curl resource
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $host.$path);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_VERBOSE, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);        
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
            'Content-Type: application/json',                                                                                
            'Authorization: Bearer '.$token.'',      
            'Content-Length: ' . strlen($data_string)                                                                       
        ));

        echo "<br>OK<br>";
        // execute the request      
        $output = curl_exec($ch);       

        // return ID for a new case
        $output = json_decode($output);                 
        var_dump($output);
    }   

每个部分看起来都是正确的,当我var_dump $path$host,甚至$data_string看起来都是正确的。但最后var_dump()只会抛出NULL

我希望我做错事或遗失一些非常重要的事情。 我可以请你提一些建议吗?

由于

编辑: 我用它做什么:

// define 
define("Audavin","here is some uniqe ID");
.
.
.
$Users = new Users;
// this return Auth token ( I verify this work with echo )
$token = $Users->authorization();  
// Calling method mentioned above
$Users->assignProfile($token,"here is org id", Audavin);

1 个答案:

答案 0 :(得分:0)

  1. 我首先要确保您要求的URL实际工作并返回有效的响应,您可以使用简单的REST客户端(例如POSTMAN chrome扩展)来实现此目的。
  2. 如果你确实得到了回复,请尝试查看它是否确实是一个有效的JSON,如果没有,这可能就是为什么你没有从json_decode那里得到任何东西(更多关于返回值的信息:http://php.net/manual/en/function.json-decode.php
  3. 最后,建议您在代码的末尾添加 curl_close($ ch),以确保释放curl句柄。