You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server调用Binance API传递API Key遇格式错误如何解决

SQL Server调用Binance API获取个人账户信息解决方案

可行性结论

该需求完全可实现,你遇到的{"code":-2014,"msg":"API-key format invalid."}错误是API Key传递格式不符合Binance规范导致的,不属于功能不可实现的问题。

现有代码的核心错误

  • Binance要求X-MBX-APIKEY必须放在HTTP请求头中传递,你当前将其封装为JSON放在GET请求的请求体中发送,完全不符合接口要求
  • GET请求不需要携带Content-Type: application/json请求头,额外添加会导致接口解析异常
  • 你定义的@Api_Key变量为JSON数组格式,不符合请求头参数的赋值规则

修正后可运行代码

DECLARE @Object AS INT;
DECLARE @ResponseT AS  VARCHAR(max);
DECLARE @Response AS TABLE(Json_Table NVARCHAR(MAX))

-- 需自行生成正确的毫秒级时间戳,注意必须是13位数字
DECLARE @Timestamp_Value NVARCHAR(255) = '1638181223430'
-- 需用你的API SECRET对 timestamp=xxx 做HMAC SHA256签名,输出十六进制字符串填到此处
DECLARE @Signature NVARCHAR(255) = 'XXXXXXXXXXXXXXXXXXXXXX'
-- 替换为你自己的API Key
DECLARE @Api_Key_Value varchar(255) = 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY'

DECLARE @Url NVARCHAR(1000) = 'https://api.binance.com/api/v3/account?'+'timestamp='+@Timestamp_Value+'&signature='+@Signature

 
EXEC sp_OACreate 'MSXML2.ServerXMLHTTP', @Object OUT;
EXEC sp_OAMethod @Object, 'open', NULL, 'get',
                 @Url,
                 'false'
-- 把API Key放到请求头里
EXEC sp_OAMethod @Object, 'setRequestHeader', NULL, 'X-MBX-APIKEY', @Api_Key_Value;
-- GET请求不需要传请求体,send参数留空
EXEC sp_OAMethod @Object, 'send', null;


EXEC sp_OAMethod @Object, 'responseText', @ResponseT OUTPUT

INSERT INTO @Response (Json_Table)
EXEC sp_OAGetProperty @Object, 'responseText'

SELECT  * FROM @Response

EXEC sp_OADestroy @Object

额外注意事项

  • 需确保你的SQL Server实例开启了OLE自动化存储过程权限,否则sp_OACreate等存储过程无法调用
  • 时间戳必须是毫秒级的13位整数,你原示例中的时间戳只有12位,会触发签名无效错误
  • 签名必须严格按照Binance官方规则生成:将所有查询参数按ASCII码排序后拼接成字符串,用API Secret作为密钥做HMAC SHA256加密,输出小写十六进制字符串作为signature值
  • 需确保你API Key的IP白名单配置包含SQL Server所在服务器的公网IP,否则接口会返回权限错误

内容的提问来源于stack exchange,提问作者rkapukaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:09:03