2017-05-30 52 views
0

我最近使用kraken.io API,并试图将此API集成到我的PHP CodeIgniter框架中。所以我也跟着文档,但我卡住了,当我用curl使用curl发布请求句柄JSON数据

这是我下面的源代码..

require_once(APPPATH.'libraries/kraken-php-master/Kraken.php'); 
     $kraken = new Kraken("SOME_KEY", "SOME_SECRET"); 


     $params = array(
       "file" => base_url()."include/".$dataIn['logo'], 
       "wait" => true 
     ); 

     $dataj='{"auth":{"api_key": "SOME_KEY", "api_secret": "SOME_SECRET"},"file":'.base_url()."include/".$dataIn['logo'].',wait":true}'; 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, "https://api.kraken.io/v1/upload"); 
     curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-Type: application/json')); 

     curl_setopt($ch, CURLOPT_POSTFIELDS, $dataj); 
     $response = curl_exec($ch); 
     curl_close($ch); 

     $data = $kraken->upload($params); 
     print_r($response);exit(); 

而且我得到了这样的结果

"{"success":false,"message":"Incoming request body does not contain a valid JSON object"}1" 

因此,谁能帮我,

并提前致谢,

+0

你可以发布你发送的json的副本吗?在添加'base_url'和$ dataIn' – Mederic

+0

{“auth”:{“api_key”:“38cd89fd7fc2b420”,“api_secret”:“9d980cb857ee2d6779c1d”},“url”:“http:\/\/localhost \ /design-ninja\/include\/uploads\/Screenshot_from_2017-02-23_12-54-576.png","wait":true} –

回答

0

不要发布您的API_KEY和API_SECRET

错误消息非常明显,您的json对象无效。举例来说,这将是对你的要求有效的JSON对象:

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

在PHP代码中要设置一个$参数数组但你不使用它。试试这个:

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

您可以验证您的JSON HERE

+0

感谢您的回应并感谢您对关键的建议,这不起作用或我没有写好代码 –

+0

通过我之前删除了一些字符后的API密钥和秘密 –

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"]; 
} 
+0

感谢您的回应我试过json_encode格式,我得到了这个错误{“成功”:false,“消息”:“没有找到文件请求“} –

+0

检查$ dataj ['file']里面的内容,这个文件必须是正确的路径/文件 –

相关问题