Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Ошибка в подписи запросов к API Binance через Delphi: причины и решения

Delphi , Синтаксис , API реализация

Вопрос, поднятый пользователем, касается проблемы с использованием API Binance для создания лимитных ордеров с помощью языка программирования Delphi. В частности, пользователь столкнулся с ошибкой {code:3702,msg:"Invalid signature."} при попытке выполнения запроса к API турецкого Binance (trbinance.com). Основная проблема заключалась в неверной подписи запроса.

Причины ошибки

  1. Неверное форматирование данных для подписи: В исходном коде данные для подписи включали символы &, которые вставлялись в строку автоматически при использовании TIdHTTP.Post(). Это приводило к тому, что данные, которые вы подписывали, отличались от данных, отправляемых в запросе.

  2. Отсутствие запроса к API Body в подписи: Согласно документации Binance, для создания подписи нужно использовать строку запроса, содержащую и параметры URL, и данные запроса (request body).

Решение проблемы

  1. Исправление форматирования данных: Удалите символы & из строки, предназначенной для добавления в запрос, чтобы избежать несоответствия между подписью и реальными данными запроса.

  2. Подпись запроса с учетом всех данных: Вместо того чтобы подписывать только строку запроса, необходимо подписать строку запроса вместе с данными запроса (request body).

sign := THashSHA2.GetHMAC(queryString + Post.text, api_secret, SHA256);

Пример кода с использованием компонента TNetHTTPClient для создания и отправки запроса на API Binance:

uses
System.Net.HttpClient, System.Hash, DateUtils;

procedure TForm1.Button1Click(Sender: TObject);
var
  url, sign, queryString, nonce, postString: string;
  ST: SystemTime;
  DT: TDateTime;
  uTime: int64;
  stream: string;
  Post: TStringList;
  httpClient: TNetHTTPClient;
  api_key, api_secret: String;
begin
  // Получение временных меток и инициализация запроса
  GetSystemTime(ST);
  //... Остальная часть кода для инициализации переменных ...

  url := 'https://trbinance.com/open/v1/orders';
  // Составление строки запроса
  queryString := 'symbol=BTT_TRY&side=0&type=1&quantity=1&price=0.0022&recvWindow=5000&timestamp=' + nonce;
  // Создание строки запроса с данными
  postString := Post.text;
  // Подпись строки запроса
  sign := THashSHA2.GetHMAC(queryString + postString, api_secret, SHA256);

  // Настройка клиента
  httpClient := TNetHTTPClient.Create(nil);
  httpClient.Request.CustomHeaders.Add('X-MBX-APIKEY:' + api_key);
  // ... Настройка SSL...

  // Подготовка запроса к API
  postString := postString + '&signature=' + sign;
  stream := httpClient.Post(url + '?', postString);

  // Обработка результатов запроса
  // ...

  // Освобождение объектов
  httpClient.Free;
end;

Альтернативный ответ и дополнительные рекомендации

  • Используйте конструкции try..finally для корректного освобождения ресурсов.
  • Убедитесь, что вы подписываете правильные данные, совпадающие с тем, что отправляется на сервер.
  • При работе с Binance используйте актуальные методы и подходы, например, переключившись на TNetHTTPClient для более стабильной работы с API.

Приведенные выше шаги помогут исправить ошибку с подписью и успешно выполнить операции через API Binance в среде Delphi.

Создано по материалам из источника по ссылке.

Вопрос связан с исправлением ошибки в подписи запросов к API Binance через Delphi, включая причины неправильной работы подписи и шаги по ее исправлению.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: API реализация ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 11:57:20/0.0137779712677/1