В процессе разработки небольшого медиапроигрывателя с встроенной поддержкой распознавания аудио с помощью API Echonest, у меня возникла необходимость отправить данные на сервис, используя команду CURL. Так как в Delphi XE3 нет встроенной поддержки CURL, а доступные третьи-party библиотеки не гарантируют совместимость с современными версиями Delphi, я решил использовать компоненты Indy для отправки данных.
Исходная команда CURL, которую нужно преобразовать:
Для преобразования этой команды в код на Object Pascal (Delphi) с использованием Indy, выполните следующие шаги:
Добавьте компоненты Indy в свой проект. Для этого найдите компоненты Indy в Palette (Панель инструментов) и перетащите TIdHTTP и TIdMultipartFormDataStream на форму.
Импортируйте необходимые библиотеки в единицу (Unit):
uses
..., IdHTTP, IdMultipartFormData;
Создайте экземпляры компонентов TIdHTTP и TIdMultipartFormDataStream, а также переменную для хранения данных, которые будут отправлены:
var
IdHTTP1: TIdHTTP;
Data: TIdMultipartFormDataStream;
FileName: string;
begin
IdHTTP1 := TIdHTTP.Create(nil);
try
Data := TIdMultipartFormDataStream.Create;
try
// Здесь будет код для отправки данных
finally
Data.Free;
end;
finally
IdHTTP1.Free;
end;
end;
Добавьте данные в поток TIdMultipartFormDataStream. В нашем случае это будет ключ API, тип файла и сам файл:
Data.AddFormField('api_key', 'FILDTEOIK2HBORODV');
Data.AddFormField('filetype', 'mp3');
FileName := 'C:\path\to\audio.mp3'; // Замените на путь к вашему файлу
Data.AddFile('track', FileName);
Отправьте данные на сервер с помощью метода Post компонента TIdHTTP:
Теперь у вас есть рабочий код на Object Pascal (Delphi) для отправки данных на сервис Echonest API с использованием компонентов Indy. Этот код можно использовать в качестве отправной точки для дальнейшей разработки и настройки в соответствии с вашими конкретными требованиями.
Пример полного кода:
uses
..., IdHTTP, IdMultipartFormData;
var
IdHTTP1: TIdHTTP;
Data: TIdMultipartFormDataStream;
FileName: string;
begin
IdHTTP1 := TIdHTTP.Create(nil);
try
Data := TIdMultipartFormDataStream.Create;
try
Data.AddFormField('api_key', 'FILDTEOIK2HBORODV');
Data.AddFormField('filetype', 'mp3');
FileName := 'C:\path\to\audio.mp3'; // Замените на путь к вашему файлу
Data.AddFile('track', FileName);
IdHTTP1.Post('http://developer.echonest.com/api/v4/track/upload', Data);
finally
Data.Free;
end;
finally
IdHTTP1.Free;
end;
end;
Пользователь хочет преобразовать команду CURL для отправки данных на сервис Echonest API в код Indy для Delphi XE3.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.