Ошибка в вызове Autodesk API через PHP с CURL

Я пытаюсь позвонить в Autodesk Authentication API через PHP с помощью CURL, но постоянно получаю ложный ответ.
Не знаете, что не так, кто-нибудь может подсказать, как вызывать REST-сервисы с помощью CURL в PHP?

Мой код такой —

$url = 'https://developer.api.autodesk.com/authentication/v1/authenticate';
$data = array("client_id" => $consumer_key,"client_secret" => $secret_key,"grant_type"=>$grant_type);

$ch=curl_init($url);
echo $ch;
$data_string = json_encode($data);
echo $data_string;
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-Type'=>'application/x-www-  form-urlencoded'));
curl_setopt($ch, CURLOPT_POSTFIELDS, array("customer"=>$data_string));
$result = curl_exec($ch);
curl_close($ch);
$data_return=array("result"=> $result);
echo json_encode($data_return);

Выход —

{"result":false}

Я проверил информацию с curl_getinfo, и это похоже на
array ( 'url' => 'https://developer.api.autodesk.com/authentication/v1/authenticate', 'content_type' => NULL, 'http_code' => 0, 'header_size' => 0, 'request_size' => 0, 'filetime' => -1, 'ssl_verify_result' => 0, 'redirect_count' => 0, 'total_time' => 0.34300000000000003, 'namelookup_time' => 0, 'connect_time' => 0.23400000000000001, 'pretransfer_time' => 0, 'size_upload' => 0, 'size_download' => 0, 'speed_download' => 0, 'speed_upload' => 0, 'download_content_length' => -1, 'upload_content_length' => -1, 'starttransfer_time' => 0, 'redirect_time' => 0, 'redirect_url' => '', 'primary_ip' => '52.26.41.203', 'certinfo' => array ( ), 'primary_port' => 443, 'local_ip' => '192.168.1.106', 'local_port' => 62792, )

In reponse its showing "protocol.http.BadFormData" error.

0

Решение

Попробуйте добавить:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

Это заставляет curl возвращать передачу в виде строки возвращаемого значения curl_exec (), а не выводить ее напрямую. Вы можете прочитать больше об опциях curl Вот.

0

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

Я не верю, что вам нужно JSON кодировать данные … пожалуйста, попробуйте Удалить следующая строка:

$data_string = json_encode($data);
0