使用laravel Http facade的poloniex上出现无效命令错误

使用laravel Http facade的poloniex上出现无效命令错误,laravel,poloniex,Laravel,Poloniex,从curl实现切换到使用laravelhttpfacade访问poloniex私有api 但我有问题。我从poloniex得到一个无效的命令响应,但我的所有参数似乎都正常工作 下面是示例代码,所有端点都是这样,但我们将在此处使用returnBalances命令来测试这一点: $req = ['command' => 'returnBalances']; // generate a nonce $time = explode(' ', microtime()); $req['nonce']

从curl实现切换到使用laravelhttpfacade访问
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 facade似乎没有发送请求参数,而您似乎将请求负载作为查询参数发送

查看,您需要在调用
post()
之前添加对
asForm()
的调用

假设代码的其余部分是正确的,下面的代码应该是正确的实现:

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

我相信Http客户端会为您处理URL编码,因此您不需要额外调用
Http\u build\u query

哦,是的,谢谢