Недопустимая ошибка команды на poloniex с использованием фасада laravel Http

Переход от реализации curl к использованию Http-фасада laravel для доступа к poloniex приватному API.

Но у меня с ним проблемы. Я получаю недопустимый ответ на команду от poloniex, но все мои параметры работают нормально.

Пример кода ниже, это относится ко всем конечным точкам, но мы будем использовать команду returnBalances, чтобы проверить это здесь:

$req = ['command' => 'returnBalances'];

// generate a nonce
$time = explode(' ', microtime());
$req['nonce'] = $time[1].substr($time[0], 2, 6);

$parameters = http_build_query($req, '', '&');

$sign = hash_hmac('sha512', $parameters, $my_secret);

$response = Http::withHeaders(["key" => $my_key, 'Sign' '=> $my_secret])
    ->post('https://poloniex.com/tradingApi', $req);

Приведенный выше ответ json возвращает:

array:1 [
  "error" => "Invalid command."
].

Мой код работает нормально, хотя при работе напрямую с curl, похоже, что фасад http не отправляет параметры запроса


person Johhn    schedule 01.02.2021    source источник


Ответы (1)


Похоже, вы отправляете полезную нагрузку запроса в качестве параметров запроса.

Изучив документы, вам нужно чтобы добавить вызов asForm() перед вызовом post().

Приведенное ниже, при условии, что остальная часть вашего кода верна, должна быть правильной реализацией:

$response = Http::withHeaders(["key" => $my_key, 'Sign' => $my_secret])
    ->asForm()
    ->post('https://poloniex.com/tradingApi', ['command' => 'returnBalances']);

Я считаю, что клиент Http позаботится о кодировании URL-адреса за вас, поэтому вам не нужен дополнительный вызов http_build_query.

person James    schedule 01.02.2021
comment
О да конечно спасибо - person Johhn; 02.02.2021