簡體   English   中英

Soundcloud下載超時

[英]Soundcloud Download Timeout

有來自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:日期X-運行時:20年齡:0內容長度:28 X-Cacheable:NO:Cache-Control = no-cache位置:gda = 1351783496_b465064be1b41027a7a0bf6067d83169“> http: //ak-media.soundcloud.com/kw7JNYi7HtCq?AWSAccessKeyId=AKIAJ4IAZE5EOI7PA7VQ&Expires=1351783496&Signature=UNtBsSfBh1XNvXPLSLNVzTQEclY%3D& gda = 1351783496_b6067d1:DES-A-E-Cache:B- A67E7, Bn-Control-b:緩存控制:無緩存X-清漆:1398398080訪問控制允許標頭:接受,授權,內容類型,來源日期:2012年11月1日,星期四,格林尼治標准時間訪問控制允許來源: *通過:1.1清漆內容類型:application / xml; charset = utf-8

302-找到

我還添加了一個Ti.API.debug(e.error); 到我創建的dlXhr.onerror函數,然后簡單返回

我得到“不”的403。 您應該監聽onerror事件,並適當地處理它。 另外,您應該流式傳輸文件,而不是將其保留在內存中,而不是一次全部注銷。 利用iOS上Ti.Network.HTTPClient上可用的“文件”屬性來簡單地執行此操作。 另外,請顯示進度,因為這是您要下載的巨大文件。 下面的示例演示了所有這些:

var win = Ti.UI.createWindow({
    backgroundColor: 'white'
});
var progressBar = Ti.UI.createProgressBar({
    max: 1, min: 0, value: 0,
    left: 20, right: 20,
    height: 20,
    visible: true
});
win.add(progressBar);
win.open();

var fileName = 'file.mp3';
var link = 'https://api.soundcloud.com/tracks/63980557/download?client_id=7a0984726d0eefbb310771c4c02116a8';
var file = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, fileName);

var client = Ti.Network.createHTTPClient({
    ondatastream: function (e) {
        progressBar.value = e.progress;
    },
    onload: function () {
        alert('Download Complete: ' + file.size);
    },
    onerror: function (e) {
        alert(client.status);
    }
});
client.open('GET', link);
client.file = file;
client.send();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM