Нуль символ в запросе, как найти?

Добрый вечер, есть такой код:

$data = [
            "date_from" => $date_from,
            "date_to" => $date_to,
            "from" => [
                "extension" => "",
                "number" => ""
            ],
            "to" => [
                "extension" => "",
                "number" => ""
            ],
            "fields" => "records, start, finish, from_extension, from_number, to_extension, to_number, disconnect_reason",
        ];

$json = json_encode($data);
        $sign = hash('sha256', $api_key . $json . $api_salt);
        $post = [
            "vpbx_api_key" => $api_key,
            "sign" => $sign,
            "json" => $json
        ];

 $post = http_build_query($post);

$ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $api_url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        $response = json_decode(curl_exec($ch));
        curl_close($ch);


Пытаюсь сделать следующее: есть апи телефонии, есть ключ апи и есть соль для подписей, пытаюсь отправить запрос на получение данных. В ответ получаю по апи сообщение "You are requesting with an invalid credential", уточнил в службе поддержки, получил ответ, что есть нуль символ в запросе и получают они у себя на стороне сервера такие данные:
"vpbx_api_key": "yiy0wyrvhft6nx4n1qwqfwtmsm4auvwj"
"amp;sign": ""
"amp;json": ""

Проверил у себя, http_build_query() отдает vpbx_api_key=[вырезал]&sign=[вырезал]&json=[вырезал]. То есть постороннего ничего нет. Уже пробовал менять кодировку файла, сохранять с bom и без, набирать весь код заново, массивом проверять количество символов у ключей, проверять через var_dump() данные, проверил на php7.1-7.3, переписывал код с использование готовой библиотеки с гитхаба (там та же ошибка).

Кто может подсказать, как решить проблему?
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
$post = http_build_query($post); подобные преобразование уже лет 5 как "легаси" врзможно требуется передать заголовки для корретной передачи.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы