如何使用curl在API中使用数组

时间:2015-05-30 05:17:26

标签: php arrays curl

我正在尝试访问cdnify API以清除单个文件的缓存(https://cdnify.com/learn/api#purgecache

这是我目前的代码

    $cdn_api_user = env('CDNIFY_API');
    $cdn_api_password = env('CDNIFY_API_PASS');
    $cdn_api_resource = env('CDNIFY_API_RESOURCE');

    $cdnifyapicacheurl = 'https://' . $cdn_api_user . ':' . $cdn_api_password . '@' . 'cdnify.com/api/v1/resources/' . $cdn_api_resource . '/cache';

    return print $cdnifyapicacheurl;

    $fields = array(
        'files' => $storageFilename
    );

    $fields_string = http_build_query($fields);

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $cdnifyapicacheurl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
    curl_setopt($ch, CURLOPT_POST, count($fields));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
    //unless you have installed root CAs you can't verify the remote server's certificate.  Disable checking if this is suitable for your application
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    //perform the HTTP DELETE
    $result = curl_exec($ch);

    //close connection
    curl_close($ch);

顶部的env变量调用我的api密钥,密码和url的资源。我已经验证我通过该网址登录。

当我通过我的代码调试时,我收到错误

    $fields = array(
        'files' => $storageFilename
    );

Array to string conversion

$storageFilename变量返回

$storageFilename = "/" . $directoryname . "/" . $asset->name;

这是DELETE的API调用所需的文件名。

我无法通过那个$ fields数组。它下面的其他东西可能会或可能不会正常运行。我只是坚持如何写出这部分。

2 个答案:

答案 0 :(得分:0)

CURLOPT_POST仅用于指示是否应在HTTP请求中包含一些帖子数据,因此其值应为布尔值(truefalse)。

如果您的数组$fields代表要发布的数据,则需要使用http_build_query()将其分配给CURLOPT_POSTFIELDS

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));

答案 1 :(得分:-1)

代码中有一个return停止代码,卷曲代码没有被执行删除它或使用//对其进行注释,然后再次尝试并且CURLOPT_POST值是布尔值true或false,表示是否你想使用post方法,你的CURL代码真的搞砸了你想用http delete方法或post方法??您只能使用一种方法,请先了解如何使用php cURL http://php.net/manual/en/book.curl.php