Как вы используете Kimono RESTful API для обновления параметров?

В частности, я хочу обновить URL-адреса, которые должны быть очищены. Документация может быть найдена здесь: https://www.kimonolabs.com/apidocs#SetCrawlUrls

К сожалению, мои знания о API cURL и RESTful ограничены, мягко говоря. Моя последняя неудачная попытка была:

$ch = curl_init("https://kimonolabs.com/kimonoapis/");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json', 'kimonoapis/$api_id/update'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

где $ data является массивом:

array(2) {
["apikey"]=>
string(32) "API_KEY"["urls"]=>
array(2) {
[0]=>
string(34) "URL 1"[1]=>
string(34) "URL 2"}
}

Я также пробовал варианты json_encode, передавая параметры в строке запроса и различные варианты cURL, но пока не увенчались успехом. Как вы успешно используете их RESTful API?

0

Решение

Переменная $api_id не интерпретируется, потому что вы используете одинарные кавычки.

Пример:

<?php

$var = "api";

var_dump(array('$api'));

Выходы:

array(1) { [0]=> string(4) "$api" }

Связанные чтения: В чем разница между одинарными и двойными кавычками в PHP?

Попробуйте изменить строку:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json', 'kimonoapis/$api_id/update'));

Чтобы использовать двойные кавычки или объединить $api_id переменная 'kimonoapis/' . $api_id . '/update'

Обновить:

Поскольку API ожидает JSON, вы должны сделать это:

$payload = json_encode( array('api_key' => 'key', 'urls' => array('url1', 'url2' ) );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $payload );

При использовании массива, как вы делаете, в соответствии с руководством If value is an array, the Content-Type header will be set to multipart/form-data.
Отсюда и ошибка 400.

Обновление 2:

$ch = curl_init("https://kimonolabs.com/kimonoapis/");
$data = json_encode(array('apikey' => 'yourkey', 'urls' => array('url1', 'url2')));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json', 'kimonoapis/' . $api_id . '/update'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
3

Другие решения

$array = array('apikey' => 'API_KEY', 'urls' => array('URL_1', 'URL_2'));
$postvars = http_build_query($array);
$url = "https://kimonolabs.com/kimonoapis/{API_ID}/update";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars);
$result = curl_exec($ch);
curl_close($ch);

После гораздо большего количества следов, ошибок и Google это — то, что я наконец получил, чтобы работать. Спасибо за помощь @JohnSvensson

0

По вопросам рекламы [email protected]