Ошибка при доступе к binance API с помощью Delphi

Я пытаюсь создать небольшое приложение (привет, мир для начала) для доступа к binance API с Delphi 10.3 с помощью TRESTClient.
Вот код:

procedure TfrmMain.btnInfoClick(Sender: TObject);
var workStream     : TStringStream;
    workResponse   : TStringStream;
    responseObject : ISuperObject;
    serverTIME     : Int64;
begin
  mDEBUG.Lines.Clear;
  try
    workStream   := TStringStream.Create;
    workResponse := TStringStream.Create;

    restCLIENT_MAIN.ResetToDefaults;
    restREQUEST_MAIN.ResetToDefaults;
    restRESPONSE_MAIN.ResetToDefaults;
    restCLIENT_MAIN.BaseURL := API_URL;
    serverTIME              := GetAPI_TIME;
    restREQUEST_MAIN.Resource       := '/sapi/v1/broker/info';
    restREQUEST_MAIN.ResourceSuffix := 'timestamp=' + serverTIME.ToString + '&signature=' + SECRET_KEY;
    restREQUEST_MAIN.Method         := TRESTRequestMethod.rmGET;
    restREQUEST_MAIN.AddParameter('Content-Type', 'application/json');
    restREQUEST_MAIN.AddParameter('X-MBX-APIKEY', CLIENT_KEY);
    restREQUEST_MAIN.Execute;
    workResponse   := TStringStream.Create(restRESPONSE_MAIN.JSONText);
    responseObject := TSuperObject.ParseStream(workResponse, True);
    if responseObject <> nil then begin
      mDEBUG.Lines.Add(responseObject.AsString);
    end else begin
      mDEBUG.Lines.Add(restRESPONSE_MAIN.Content);
    end;
  finally
    mDEBUG.Lines.Add('');
    mDEBUG.Lines.Add('restCLIENT_MAIN.BaseURL:' + restCLIENT_MAIN.BaseURL);
    mDEBUG.Lines.Add('restREQUEST_MAIN.Resource:' + restREQUEST_MAIN.Resource);
    mDEBUG.Lines.Add('restREQUEST_MAIN.ResourceSuffix:' + restREQUEST_MAIN.ResourceSuffix);
    FreeAndNil(workStream);
    FreeAndNil(workResponse);
  end;
end;

Результат:

Страница ошибки Whitelabel

В этом приложении нет явного сопоставления для / error, поэтому вы рассматриваете это как запасной вариант.

Thu Apr 01 17:32:16 UTC 2021There was an unexpected error (type=Not Found, status=404).No message available
restCLIENT_MAIN.BaseURL:https://api.binance.com/
restREQUEST_MAIN.Resource:sapi/v1/broker/info
restREQUEST_MAIN.ResourceSuffix:timestamp=1617298336054&signature=<SECRET_KEY>

Однако с POSTMAN результат будет другим: Поскольку я не могу отправить правильное время (окно возможности меньше 1 секунды), я подозреваю, что potman всегда будет выдавать мне такую ​​ошибку.

{
    "code": -1021,
    "msg": "Timestamp for this request is outside of the recvWindow."
}

кто-нибудь может направить меня?

Я не думаю, что timestamp и signature следует передавать как ResourceSuffix, а скорее как параметры.

Olivier 01.04.2021 21:24

Все, что является СЕКРЕТНЫМ, не следует отправлять как есть. Чаще всего он используется для создания HMAC вместе с другой информацией запроса, такой как параметры и отметка времени.

Brian 01.04.2021 21:43
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
56
0

Другие вопросы по теме