Ошибка в вызове 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.

2 ответа

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

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

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

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

$data_string = json_encode($data);
Другие вопросы по тегам