Delphi 卷曲为普通URL字符串

Delphi 卷曲为普通URL字符串,delphi,curl,delphi-xe3,firemonkey-fm2,Delphi,Curl,Delphi Xe3,Firemonkey Fm2,早上好 我正在开发一个小型媒体播放器,内置支持使用的音频识别。我以前处理过API,知道如何提交和解析结果,但另一个API在其文档中提供了简单的POST/GET示例,因此它几乎适用于任何情况,而不管语言或平台 然而,EchonestAPI只提供了CURL示例。卷曲是我从未处理过的事情。具体来说,我是在delphixe3或Firemonkey 2中工作的,因此没有内置的CURL库或组件。有一些第三方软件可用,但我不相信他们是最新的,因为他们将Delphi6列为自己的开发环境,简短的搜索表明他们不再使

早上好

我正在开发一个小型媒体播放器,内置支持使用的音频识别。我以前处理过API,知道如何提交和解析结果,但另一个API在其文档中提供了简单的
POST/GET
示例,因此它几乎适用于任何情况,而不管语言或平台

然而,EchonestAPI只提供了CURL示例。卷曲是我从未处理过的事情。具体来说,我是在
delphixe3
Firemonkey 2
中工作的,因此没有内置的CURL库或组件。有一些第三方软件可用,但我不相信他们是最新的,因为他们将Delphi6列为自己的开发环境,简短的搜索表明他们不再使用现代版本的Delphi(这是真是假是另一回事)

由于我希望尽可能地保持跨平台,以便将来可能编译
OSX
版本,并对处理
POST
GET
感到自信,我将如何将这个CURL命令“翻译”成可以与
Indy
一起使用的东西(例如)

这是直接从他们的网站上获取的,用于将曲目上传到他们的服务中

我不确定关于CURL的细节,所以在我向服务中抛出随机数据之前,我觉得最好看看so社区是否能给出一个简短的解释和我可以使用的示例。在任何情况下,这个解释都比这个例子更有价值,但是一个例子可能对碰巧遇到类似问题的其他人很有用

问候,,
Scott Pritchard.

-F选项告诉curl使用HTTP
的“多部分/表单数据”
内容类型发布所提供的数据,在HTTP层如下所示:

POST /api/v4/track/upload HTTP/1.1
Host: developer.echonest.com
Content-Type: multipart/form-data; boundary="boundaryvalue"

--boundaryvalue
Content-Disposition: form-data; name="api_key"

FILDTEOIK2HBORODV
--boundaryvalue
Content-Disposition: form-data; name="filetype"

mp3
--boundaryvalue
Content-Disposition: form-data; name="track"; filename="audio.mp3"
Content-Type: audio/x-mpg

<binary audio data here>
--boundaryvalue--
POST /api/v4/track/upload HTTP/1.1
Host: developer.echonest.com
Content-Type: multipart/form-data; boundary="boundaryvalue"

--boundaryvalue
Content-Disposition: form-data; name="api_key"

FILDTEOIK2HBORODV
--boundaryvalue
Content-Disposition: form-data; name="filetype"

mp3
--boundaryvalue
Content-Disposition: form-data; name="track"; filename="audio.mp3"
Content-Type: audio/x-mpg

<binary audio data here>
--boundaryvalue--
uses
  ..., IdHTTP, IdMultipartFormData;

var
  Data: TIdMultipartFormDataStream;
begin
  Data := TIdMultipartFormDataStream.Create;
  try
    Data.AddFormField('api_key', 'FILDTEOIK2HBORODV');
    Data.AddFormField('filetype', 'mp3');
    Data.AddFile('track', 'C:\path to\audio.mp3');
    IdHTTP1.Post('http://developer.echonest.com/api/v4/track/upload', Data);
  finally
    Data.Free;
  end;
end;