首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于FTX美国API POST请求的问题

关于FTX美国API POST请求的问题
EN

Stack Overflow用户
提问于 2022-10-10 12:29:15
回答 1查看 45关注 0票数 1

我查看了在这里找到的FTX文档:https://docs.ftx.us/#overview

我看过这个回购程序中的示例代码:https://github.com/ftexchange/ftx/tree/master/rest

我在/wallet/withdrawals上点击POST请求,但我得到了

{“成功”:假,“错误”:“未登录:无效签名”,"errorCode":"not_logged_in"}

这是我的密码:

代码语言:javascript
复制
        resp = requests.get('https://otc.ftx.com/api/time')
        ftx_t = resp.json()
        time = ftx_t['result']
        date_format = datetime.datetime.strptime(time, "%Y-%m-%dT%H:%M:%S.%f%z")
        unix_time = datetime.datetime.timestamp(date_format)
        ts = unix_time * 1000
        # ts = int(time.time() * 1000)
        request = Request('**POST**', '**https://ftx.us/api/wallet/withdrawals**')  # To make withdrawas
        prepared1 = request.prepare()
        body = {
            "coin": "USDT",   # coin to withdraw
            "size": 0,  # amount to withdraw
            "address": "***************"  # address to send to
        }
        signature_payload1 = f'{ts}{prepared1.method}{prepared1.path_url}'.encode()
        signature1 = hmac.new('**SECRET KEY**'.encode(), signature_payload1, 'sha256').hexdigest()

        prepared1.headers[f'FTXUS-KEY'] = '**API KEY**'
        prepared1.headers[f'FTXUS-SIGN'] = signature1
        prepared1.headers[f'FTXUS-TS'] = str(ts)
        prepared1.headers['Content-Type'] = 'application/json'
        prepared1.headers['Accept'] = 'application/json'
        
        data1 = json.dumps(body).encode()


        res10 = requests.post('https://ftx.us/api/wallet/withdrawals', data=data1, headers=prepared1.headers)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-11 11:22:07

您需要对发送post请求的数据进行编码,并在请求POST请求时将这些编码的数据添加到正文中。

这可能有助于:

在调用signature1变量之前,需要添加以下内容:

代码语言:javascript
复制
prepared1.body = json.dumps(body).encode()
if prepared1.body:
   signature_payload1 += prepared1.body

在POST请求方法中,在数据属性中添加主体

代码语言:javascript
复制
res10 = requests.post('https://ftx.us/api/wallet/withdrawals', data=prepared1.body, headers=prepared1.headers)

在这里,我为您编辑了代码:

代码语言:javascript
复制
 resp = requests.get('https://otc.ftx.com/api/time')
            ftx_t = resp.json()
            time = ftx_t['result']
            date_format = datetime.datetime.strptime(time, "%Y-%m-%dT%H:%M:%S.%f%z")
            unix_time = datetime.datetime.timestamp(date_format)
            ts = (unix_time * 1000)
            request = Request('POST', 'https://ftx.us/api/wallet/withdrawals')  # To make withdrawas
            prepared1 = request.prepare()
            signature_payload1 = f'{ts}{prepared1.method}{prepared1.path_url}'.encode()
            body = {
                "coin": "USDT",  # coin to withdraw
                "size": 0,  # amount to withdraw
                "address": "***************"  # address to send to
            }
            prepared1.body = json.dumps(body).encode()
            if prepared1.body:
                signature_payload1 += prepared1.body
            signature1 = hmac.new(SECRET KEY.encode(), signature_payload1,
                                  'sha256').hexdigest()

            prepared1.headers[f'FTXUS-KEY'] = API KEY
            prepared1.headers[f'FTXUS-SIGN'] = signature1
            prepared1.headers[f'FTXUS-TS'] = str(ts)
            prepared1.headers['Content-Type'] = 'application/json'
            prepared1.headers['Accept'] = 'application/json'
            res10 = requests.post('https://ftx.us/api/wallet/withdrawals', data=prepared1.body, headers=prepared1.headers)

您可以检查这些以供参考:

https://blog.ftx.com/blog/api-authentication/

https://github.com/ftexchange/ftx/issues/10

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74014962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档