4

我正在使用 nativescript 为 android 开发应用程序。我有类似的东西

var fetchModule = require("fetch");
fetchModule.fetch("http://202.120.227.11/")
    .then(function(resp){
        console.log(JSON.stringify(resp));
        return resp;
    })
    .catch(function(err){
        console.log(JSON.stringify(err));
        return err;
    });

但该then块永远不会被执行。有时该catch块被执行并给出网络错误。但是无论哪种情况,根据我的 tcpdump 记录,发送请求并顺利收到响应。

因此,似乎 nativescript 出于某种原因过滤了响应。

有人经历过吗?

4

2 回答 2

5

请注意,您resp是一个Response对象,如果您想读取它的内容,您需要使用它的功能之一:arrayBufferblobformDatajsontext

这些函数读取完成的响应并返回一个以读取值解析的承诺。

例如,

fetch("http://202.120.227.11/")
.then(function(resp){
  return resp.json();
})
.then(function(val) {
  console.log(JSON.stringify(val));
  return val;
});
于 2016-03-15T12:25:13.757 回答
1

我知道这已经很晚了,但我只是想发帖以防有人遇到同样的问题。我在使用 NativeScript 时遇到了同样的问题,我的解决方案是保护我的站点/端点。应用传输安全策略需要使用安全连接。因此,http 将不起作用。您必须通过 https 连接。

于 2017-02-16T16:23:36.087 回答