Вот команда командной строки:
curl -H "Authorization: Bearer API_KEY" -X PUT https://graph.api.smartthings.com/api/smartapps/installations/DEVICE_ID/lock
Вот что у меня есть до сих пор, что не так с этим кодом:
$headers = array('Authorization: Bearer ' . $st_api_token);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
$response = curl_exec($ch);
curl_close($ch);
Выход для var_dump(curl_getinfo($ch));
Я до сих пор не могу найти настоящую ошибку или я делаю что-то не так в переводе этого кода на PHP:
<?php array (size=26)
url => string 'https://graph.api.smartthings.com/api/smartapps/installations/c8137097-8532-43b8-b516-0573cb91ecee/setLockCode/20/3333' (length=118)
'content_type' => null
'http_code' => int 0
'header_size' => int 0
'request_size' => int 0
'filetime' => int -1
'ssl_verify_result' => int 1
'redirect_count' => int 0
'total_time' => float 0.547
'namelookup_time' => float 0
'connect_time' => float 0.282
'pretransfer_time' => float 0
'size_upload' => float 0
'size_download' => float 0
'speed_download' => float 0
'speed_upload' => float 0
'download_content_length' => float -1
'upload_content_length' => float -1
'starttransfer_time' => float 0
'redirect_time' => float 0
'redirect_url' => string '' (length=0)
'primary_ip' => string '54.243.113.196' (length=14)
'certinfo' =>
array (size=0)
empty
'primary_port' => int 443
'local_ip' => string '192.168.0.139' (length=13)
'local_port' => int 62555
?>
После поиска в интернете я исправил эту проблему, изменив массив заголовков и добавив настройки curl:
$headers = array('Authorization: Bearer ' . $st_api_token,
'Content-Type: application/json',
'Accept: json',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST , false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
Других решений пока нет …