我在Angular HTTP请求中做错了什么?

时间:2017-08-24 05:42:55

标签: javascript angular

我从dropbox api收到错误:

调用API函数“files / download”时出错: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\"}"

我可能在角度方面弄错了标题,我之前从未使用它们。

编辑:path变量是一个等于文件路径的字符串。即“readme.txt”

1 个答案:

答案 0 :(得分:1)

快速谷歌并找到了这个: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);
    }
  );
}

修改

您的path变量应如下所示:

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