我使用 SoundCloud API 来检索可流式轨道的流 URL。我遵循重定向,最终得到一个如下所示的 URL:
http://ec-media.soundcloud.com/eodihgiuh.128.mp3?<a string>
    AWSAccessKeyId=<access key>
    &Expires=<timestamp>
    &Signature=<signature>
或者
http://ak-media.soundcloud.com/euieuieie.128.mp3?
    AWSAccessKeyId=<access key>
    &Expires=<timestamp>
    &Signature=<signature>
    &__gda__=<a string>
然后我开始在这个 URL 上流式传输 MP3 数据。
首先,我发送一个HEAD读取Content-Length标题的请求,这样我就知道需要发送多少个GET请求才能播放整首歌曲。
然后我发送几个部分GET请求,每个请求都有不同的Range标头。
问题是有时HEAD请求会返回403状态码,即使GET对完全相同的 URL 的请求会返回200状态码。似乎当且仅当主机是 时才会发生这种情况ak-media.soundcloud.com。
这应该发生吗?我希望HEAD请求返回与请求完全相同的标头GET,只是没有正文响应。
干杯,
铅
PS:我可能应该提一下,我的代码不是在计算机上运行,而是在具有非常有限资源的微型 8 位处理器的音频设备上运行。