2017-08-24 21 views
0

Dropbox APIからエラーが発生しました:このAngular HTTPリクエストで何が間違っていますか?

HTTPヘッダー "Dropbox-API-Arg":JSONとして入力をデコードできませんでした。

let url = 'https://content.dropboxapi.com/2/files/download' 
    let headers = new Headers({ }); 
    headers.append('Authorization', 'Bearer ...'); 
    headers.append('Dropbox-API-Arg', '/readme.txt'); 
    let options = new RequestOptions({ headers: headers }); 

     this.http 
     .get(url, options) 
     .subscribe(this.fileContent) 

これは彼らのAPIを置く例です。

curl -X POST https://content.dropboxapi.com/2/files/download \ 
    --header "Authorization: Bearer <get access token>" \ 
    --header "Dropbox-API-Arg: {\"path\": \"/Homework/math/Prime_Numbers.txt\"}" 

私は前にそれらを使ったことがない角度で間違ったヘッダを得ているかもしれません。

編集:パス変数は、ファイルパスと同じ文字列です。すなわち、「README.TXT」

+0

あなたはSDKのバージョンは何を使用して? –

+0

私はHTTPルートを使用しています。 https://www.dropbox.com/developers/documentation/http/documentation#files-download – Zachscs

答えて

1

が簡単にGoogleを行なったし、この発見:https://www.dropboxforum.com/t5/API-support/HTTP-header-quot-Dropbox-API-Arg-quot-could-not-decode-input-as/td-p/173822

を基本的に変数pathのフォーマットは、APIが期待するものに合わせてではありません。

私はリンクが提供するユーティリティ機能を追加しました:

var charsToEncode = /[\u007f-\uffff]/g; 

function http_header_safe_json(v) { 
    return JSON.stringify(v).replace(charsToEncode, 
    function(c) { 
     return '\\u'+('000'+c.charCodeAt(0).toString(16)).slice(-4); 
    } 
); 
} 

EDIT

あなたpath変数は次のようになります。

var path = { 
    path: '/readme.txt' 
}; 
+0

私はすでにそれを見ました。私はapiがどんなフォーマットを予期しているかわからない。私は使用されたスレッドに応答した人の機能を使って試してみましたが、同じエラーが返されました。 – Zachscs

+0

あなたの変数 'path'の値は何ですか? – jkris

+0

私は '/readme.txt'を書きました – Zachscs

関連する問題