使用laravel Http facade的poloniex上出现无效命令错误
从curl实现切换到使用laravelhttpfacade访问使用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']
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
哦,是的,谢谢