使用curl发布请求处理JSON数据

时间:2017-05-30 08:31:59

标签: php curl image-compression kraken-image-optimizer

我最近使用kraken.io API,我正在尝试将这个API与我的PHP CodeIgniter框架集成。所以我按照文档进行操作,但在使用{ "content": { "version" : "1.1", "env" : "test", "id" : "1.1" } }

时卡住了

这是我的源代码。

getPosts = () =>  {
let that=this;
    $.ajax({
        type: 'get',
        url: urlname,
        success: function(data) {
            that.setState( { posts: data } )
        }
    });
}

我得到了这个结果

curl

所以有人可以帮助我,

提前谢谢,

2 个答案:

答案 0 :(得分:0)

不要发布您的API_KEY和API_SECRET

错误信息非常清楚,您的json对象无效。例如,这将是您的请求的有效JSON对象:

{
    "auth": {
        "api_key": "SOME",
        "api_secret": "SECRET"
    },
    "file": "somefile.txt",
    "wait": true
}

在您的PHP代码中,您正在设置$ params数组,但之后您不会使用它。试试这个:

$dataj='{"auth":{"api_key": "SOME_KEY", "api_secret": "SOME_SECRET"},"file":"' . $params["file"]. '", "wait":true}';

您可以验证JSON HERE

答案 1 :(得分:0)

您应该使用json_encode函数来生成JSON数据

$dataj = json_encode([
    "auth" => [
        "api_key" => "API_KEY",
        "api_secret" => "API_SECRET"
    ],
    "file" => base_url() . "include/" . $dataIn['logo'],
    "wait" => true
]);

修改 以下是https://kraken.io/docs/upload-url的示例,因此您无需使用curl

require_once("Kraken.php");

$kraken = new Kraken("your-api-key", "your-api-secret");

$params = array(
    "file" => "/path/to/image/file.jpg",
    "wait" => true
);

$data = $kraken->upload($params);

if ($data["success"]) {
    echo "Success. Optimized image URL: " . $data["kraked_url"];
} else {
    echo "Fail. Error message: " . $data["message"];
}