2017-05-30 26 views
0

私は最近kraken.io APIを使用しています。このAPI wuthをPHP CodeIgniterフレームワークと統合しようとしています。だから私は、マニュアルを参照して続いたが、私はこれは以下の私のソースコードであるcurlcurlを使用して要求の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: /design-ninja\/include\/uploads\/Screenshot_from_2017-02-23_12-54-576.png","wait":true} –

答えて

0

あなたのAPI_KEYとAPI_SECRETを終了しない

エラーメッセージはきわめて明確で、jsonオブジェクトは無効です。あなたは$ params配列を設定しているが、その後、あなたがそれを使用していないPHPコードで

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

:例えば、これはあなたの要求のための有効なJSONオブジェクトになります。あなたのJSON HERE

+0

キーに関するアドバイスをいただきありがとうございます。これは機能しません。コードをよく書きません –

+0

投稿APIキーと秘密の前にいくつかの文字を削除する方法で –

0

を検証することができますあなたのJSONデータを生成するjson_encode機能を使用する必要があります

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

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

EDIT:これを試してみてください。ここ はそうあなたドン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形式を試してみました。リクエスト "} –

+0

' $ dataj ['file'] 'の中にあるものを確認してください。これは正しいパスである必要があります/ –

関連する問題