Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用rest api更新详细信息时出错_Php_Rest_Api_Curl - Fatal编程技术网

Php 使用rest api更新详细信息时出错

Php 使用rest api更新详细信息时出错,php,rest,api,curl,Php,Rest,Api,Curl,您好,我尝试使用以下代码更新产品价格。但由于某种原因,它显示出错误。这是。请检查这个 $storeId = storeid; $productId = myproductid; $myToken = mytoken; $dataRAW = json_encode( array( 'price' => 80 ), JSON_FORCE_OBJECT ); $dataToPut = $dataRAW; $dataRAW = http_build_query($dataRAW);

您好,我尝试使用以下代码更新产品价格。但由于某种原因,它显示出错误。这是。请检查这个

$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\u build\u query():参数1应为数组或对象。第7行C:\xampp\htdocs\ecwid\code.php中给出的值不正确

警告:sizeof():参数必须是在第11行的C:\xampp\htdocs\ecwid\code.php中实现可数的数组或对象

连接失败:设置证书验证位置时出错:CAfile:C:\xampp\apache\bin\curl-ca-bundle.crt CApath:none


您正在
http\u build\u query
中传递
JSON
数据,因此,http\u build\u query只获取数组参数并转换为查询字符串。您可以参考下面的示例

$dataRAW   = ['price' => 80];
$dataRAW   = http_build_query($dataRAW);

前两条错误消息是不言自明的。您应该从手册中查找和开始。关于第三个问题,这一点在这里也被多次询问和回答。在这里发布之前,请进行一些基本的调试和研究。
json\u encode
正在创建一个对象-
http\u build\u query
需要一个数组作为输入,就像
sizeof
一样。至于证书错误,请从参数1下载一份
cacert.pem
,该参数应为数组或对象。您的json似乎有一个错误。为什么
$dataToPut=json\u encode($dataToPut)?它对json编码了两次。@RamRaider,我将把这个证书放在这里。在我的项目文件夹或xampp中。或者,如果我在我的https服务器上运行这个查询,那么它就可以了?