0

我在请求数据时遇到问题,当我在 API 资源管理器中尝试它时它工作正常,但是当我要从我的 web 应用程序发出请求时,它只是响应状态为 200 和一个充满奇怪字符的正文。

请求:

const options = {  
      url: 'https://apigateway.lifelog.sonymobile.com/v1/users/me/activities',
      method: 'GET',
      headers: {
          'Accept': 'application/json',
          'Authorization': "Bearer " + access_token,
          'Accept-Encoding': 'gzip',         
          'Content-Encoding': 'gzip'


      }
  };
  request(options, function(err, res, body) {  
      console.log(JSON.stringify(res))
  });

响应:

{"statusCode":200,"body":"\u001f?\b\u0000\u0000\u0000\u0000\u0000\u0000\u0003\u0000\u0000\u0000???Xmo#E\u0012?+?_o?S?U?/????\u0017-???8V?Bh????u??\u0010V???W?\rd??e$\u0004? ????kMU?O=?w?]?_?????w?U?X.

响应继续进行,我想复制/粘贴所有内容没有意义。我不确定我是否真的需要发送前面带有 Bearer 字样的令牌,但这就是给了我状态码 200 的原因。

4

1 回答 1

1

由于您正在请求 gzip 编码,因此您需要告诉 request 期望 gzip 压缩的内容,只需将 gzip: true 添加到您的选项中。

const options = {  
  url: 'https://apigateway.lifelog.sonymobile.com/v1/users/me/activities',
  method: 'GET',
  headers: {
      'Accept': 'application/json',
      'Authorization': 'Bearer ' + access_token,
      'Accept-Encoding': 'gzip',         
      'Content-Encoding': 'gzip'
  },
  gzip: true  
};

然后你应该查看 body 参数而不是 res 你只想要实际的生命日志数据

request(options, function(err, res, body) {  
  console.log(body)
});

希望这可以帮助。

干杯

于 2017-03-02T09:19:51.530 回答