soundcloud的人在看这个吗?为什么我收到一个有效请求的 403?
我目前正在使用 Titanium 构建一个 iOS 应用程序。
我包含一个新功能,允许用户下载 Soundcloud .mp3 文件并从应用程序播放它们(保存到应用程序目录)
我编写的代码在某些轨道上运行良好,但不适用于其他轨道。客户端可以无限下载所有曲目,并且我已经大大增加了最大超时时间,但它仍然只下载了大约 170 字节,然后在某些曲目上失败了。在其他人身上,它可以毫无问题地下载整个曲目。真的被这个难住了,有人有什么想法吗?
下面是代码,也是一个轨道工作的例子,如果有人能看出区别,一个不工作?
谢谢
贾斯汀
//Download code
var newDir = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory,'scDownloads');
newDir.createDirectory();
var id = fStripped;
var dlXhr = Titanium.Network.createHTTPClient({
timeout : 500000});
dlXhr.onload = function(){
var file = Ti.Filesystem.getFile(newDir.resolve(),id +'.mp3');
Ti.API.warn('file is: ' + file);
file.createFile();
file.write(this.responseData);
}
dlXhr.open('GET',dlURL + '?client_id=' + soundcloudClientID);
dlXhr.send();
这里有几首曲目(带有客户 ID)
这个有效:https ://api.soundcloud.com/tracks/60943956/download?client_id=7a0984726d0eefbb310771c4c02116a8
这个没有:https ://api.soundcloud.com/tracks/63980557/download?client_id=7a0984726d0eefbb310771c4c02116a8
我已经在 Soundcloud 的 API 控制台 (http://developers.soundcloud.com/console) 上对此进行了测试,得到了以下结果:
HTTP/1.1 302 临时移动 Access-Control-Expose-Headers: Date X-Runtime: 20 Age: 0 Content-Length: 28 X-Cacheable: NO:Cache-Control=no-cache Location: gda=1351783496_b465064be1b41027a7a0bf6067d83169">http: //ak-media.soundcloud.com/kw7JNYi7HtCq?AWSAccessKeyId=AKIAJ4IAZE5EOI7PA7VQ&Expires=1351783496&Signature=UNtBsSfBh1XNvXPLSLNVzTQEclY%3D& gda =1351783496_b465064be1b41027a7a0bf6067d83169 Access-Control-Allow-Methods: GET, PUT, POST, DELETE Connection: close Server: nginx X-Cache: MISS Cache-Control: no-cache X-Varnish: 1398398080 Access-Control-Allow-Headers: Accept, Authorization, Content-Type, Origin Date: Thu, 01 Nov 2012 15:24:36 GMT Access-Control-Allow-Origin: * 通过:1.1 varnish 内容类型:application/xml;charset=utf-8
302 - 找到
我还添加了一个 Ti.API.debug(e.error); 到我创建的 dlXhr.onerror 函数,这只是返回