Ошибка обновления информации с помощью rest api - PullRequest
1 голос
/ 29 мая 2019

Привет, я пытаюсь обновить цену продукта, используя следующий код.Но почему-то это показало ошибку.Это документация .Пожалуйста, проверьте это.

$storeId   = storeid;
$productId = myproductid;
$myToken   = mytoken;
$dataRAW   = json_encode( array( 'price' => 80 ), JSON_FORCE_OBJECT );
$dataToPut = $dataRAW;
$dataRAW   = http_build_query($dataRAW);
$context   = [
    'http' => [
        'method' => 'PUT',
        'header' => "Authorization: apikeystring\r\n" . "Content-Length: ".sizeof($dataToPut)."\r\n" . "Content-Type: application/json\r\n",
        'content' => $dataToPut
    ] 
];

$context   = stream_context_create($context);
$url       = "https://app.ecwid.com/api/v3/".urlencode($storeId)."/products/".urlencode($productId)."?token=".$myToken; 
$dataToPut = json_encode($dataToPut);


$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Host: app.ecwid.com','Content-Type: application/json;charset=utf-8','Cache-Control: no-cache'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $dataToPut);

// Make the REST call, returning the result
$response = curl_exec($curl);
echo $response;

if (!$response) {
    echo("Connection Failure: ".curl_error($curl));
    die();
}
curl_close($curl);

Я запускаю этот код на своем локальном хосте.http://localhost/ecwid/code.php

Предупреждение: http_build_query (): параметр 1 должен быть массивом или объектом.Неверное значение, указанное в C: \ xampp \ htdocs \ ecwid \ code.php в строке 7

Предупреждение: sizeof (): параметр должен быть массивом или объектом, реализующим Countable в C: \ xampp \ htdocs \ecwid \ code.php в строке 11

Сбой подключения: ошибка установки сертификата для проверки местоположения: CAfile: C: \ xampp \ apache \ bin \ curl-ca-bundle.crt CApath: нет

1 Ответ

1 голос
/ 29 мая 2019

Вы передаете JSON данные в http_build_query, так что это случилось, http_build_query принимает только параметры массива и конвертирует в строку запроса. Вы можете взять ссылку из следующего примера.

$dataRAW   = ['price' => 80];
$dataRAW   = http_build_query($dataRAW);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...