Delphi 卷曲为普通URL字符串
早上好 我正在开发一个小型媒体播放器,内置支持使用的音频识别。我以前处理过API,知道如何提交和解析结果,但另一个API在其文档中提供了简单的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列为自己的开发环境,简短的搜索表明他们不再使
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;