javascript - 我在这个 Angular HTTP 请求中做错了什么?

标签 javascript angular

我从 dropbox api 收到错误:

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

我可能在 Angular 上弄错了标题,我以前从未使用过它们。

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

最佳答案

快速谷歌一下,发现了这个: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'
};

关于javascript - 我在这个 Angular HTTP 请求中做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45853774/

相关文章:

javascript - 我可以在 node.js 中使用 CoffeeScript 而不是 JS 吗?

angular - 错误 TS2300 : Duplicate identifier 'export='

javascript - Angular 7 使用 *ngfor 分组数据

typescript - Angular 2 : Inject external Component into other component via directive not working

javascript - 如何加快网页加载时间(CRON?在后台加载 API 调用?)

javascript - 使用 jquery 可互换地更改两个 html 输入表单值

javascript - JQUERY 屏幕键盘

javascript - 我如何从 nth-child() 在 javascript 中分配颜色?

angular - npm 包似乎已损坏

javascript - 如何在 Typescript 中按名称调用具有不同签名的方法?