2017-03-13 56 views
0

我使用Dropbox的下載文件API的工作,我得到了一個道理,但它的「呼叫錯誤,以API函數‘返回400錯誤的請求錯誤 文件/下載’:必須提供HTTP頭「授權」 或URL參數 「授權」Dropbox的下載文件API停止了與400錯誤

我遵循的Dropbox API文檔,但它不能正常工作〜 「」 〜 如何解決呢?

這是我的代碼(angular2)

downloadFile(fileid){ 
let headers = new Headers(); 

headers.append('Authorization', 'Bearer ' + this.accessToken); 
headers.append('Dropbox-API-Arg','path:'+ fileid); 

return this.http.post('https://content.dropboxapi.com/2/files/download',new RequestOptions({ headers: headers ,responseType:ResponseContentType.ArrayBuffer})).map((res) => { 

    let arrayBuffer = res.arrayBuffer(); 
    let contentType = res.headers.get('content-type'); 
    return { 
    fileid: fileid, 
    blob: new Blob([arrayBuffer], { type: contentType }) 
    }; 
}); 
+0

爲什麼你使用'承載'在你的授權令牌中? –

+0

我遵循dropbox api doc,它需要使用承載器https://www.dropbox.com/developers/documentation/http/documentation#files-download – steven

+0

[交叉鏈接供參考:https://www.dropboxforum.com/ t5/API-support/download-file-API-stopped-working-working-with-400-error/mp/211317#M10617] – Greg

回答

1

我使用dropbox v2 api在android中。就像你一樣,我得到了400個不好的要求。事實證明,Android HttpUrlConnection設置了默認的「Content-Type」標題值。 Dropbox下載api需要「Content-Type」缺失或爲空。儘管我在iOS中沒有同樣的問題。

所以在angular2也許,你需要做的是這樣的:

headers.append('Content-Type',''); 

另外, 'Dropbox的-API - 精氨酸' 頭必須是這樣的:

headers.append('Dropbox-API-Arg','{\"path\": \"/filepath\"}'); 
+0

'headers.append('Content-Type','');'爲我做了。這不是很明顯 - 謝謝! –