Php 使用curl来post请求处理JSON数据
我最近使用了kraken.io API,并试图将此API与我的PHP CodeIgniter框架集成。所以我遵循了文档,但当我使用Php 使用curl来post请求处理JSON数据,php,curl,image-compression,kraken-image-optimizer,Php,Curl,Image Compression,Kraken Image Optimizer,我最近使用了kraken.io API,并试图将此API与我的PHP CodeIgniter框架集成。所以我遵循了文档,但当我使用curl 下面是我的源代码 require_once(APPPATH.'libraries/kraken-php-master/Kraken.php'); $kraken = new Kraken("SOME_KEY", "SOME_SECRET"); $params = array( "file"
curl
下面是我的源代码
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"
谁能帮帮我吗
提前感谢,不要发布您的API密钥和API密钥 错误消息非常清楚,您的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\u encode
函数来生成json数据
$dataj = json_encode([
"auth" => [
"api_key" => "API_KEY",
"api_secret" => "API_SECRET"
],
"file" => base_url() . "include/" . $dataIn['logo'],
"wait" => true
]);
编辑:
下面是一个示例,您不需要使用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"];
}
你能发一份你发出的json吗?在您添加了
base\u url
和$dataIn
{“auth”:{“api\u key”:“38cd89fd7fc2b420”,“api\u secret”:“9d980cb857ee2d6779c1d”},“url”:“http:\/\/localhost\/design ninja\/包括/从2017-02-23\u 12-54-576.png上传\/屏幕截图”;“wait”:true}感谢您的回复并感谢您对key的建议,这不起作用,或者我没有很好地编写代码,因为我在post API key和Secret之前删除了一些字符。感谢您的回复,我尝试了json_编码格式,但出现了以下错误{“success”:false,message:“在请求中找不到文件”}检查$dataj['file']
,这必须是文件的正确路径/url