React Native:获取请求失败并出现错误 - TypeError:网络请求失败(...)

Posted

技术标签:

【中文标题】React Native:获取请求失败并出现错误 - TypeError:网络请求失败(...)【英文标题】:React Native: fetch request failed with error - TypeError: Network request failed(…) 【发布时间】:2016-03-02 08:40:06 【问题描述】:

我正在使用 React Native 开发一个简单的应用程序。我正在android设备上测试它。我创建了一个 Node.js 服务器来监听请求,它在http://localhost:3333/ 运行。 接下来,我从 index.android.js 发出 fetch 请求。下面是代码。

fetch('http://localhost:3333/', 
        
            'method': 'GET',
            'headers': 
                'Accept': 'text/plain',                                     
            
               
    ) 
.then((response) => response.text()) 
.then((responseText) => 
    console.log(responseText);  
) 
.catch((error) => 
    console.warn(error);
); 

节点服务器的请求处理程序代码如下

app.use(function(req, res, next) 
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
); 
app.use(express.static('public'));
app.get('/', function(req, res) 
    console.log('Request received for /');
    res.send("this is the response from the server");
    res.end();
);

但是,提取请求不起作用。我在 Chrome 控制台中遇到的错误是: TypeError: 网络请求失败(…)。

如何做到这一点?

【问题讨论】:

【参考方案1】:

由于您的 Android 设备有自己的 IP,因此您需要将 URL 指向您的计算机 IP 地址,而不仅仅是 localhost。例如fetch('http://192.168.0.2:3333/')

【讨论】:

我正在调用 url 但仍然遇到同样的错误。 fetch('private-18642-test2979.apiary-mock.com/notes/1', 方法: 'get', 'headers': 'Accept': 'application/json', 这不是一个真正的URL,你也需要添加协议。【参考方案2】:

使用 Android Debug Bridge 工具 (adb) 的 reverse 命令:

adb reverse <remote> <local> - reverse socket connections.
                               reverse specs are one of:
                                 tcp:<port>
                                 localabstract:<unix domain socket name>
                                 localreserved:<unix domain socket name>
                                 localfilesystem:<unix domain socket name>

例如:

adb reverse tcp:3333 tcp:3333

这使您可以从您的设备访问localhost:3333。您还可以使用不同的端口。例如:

adb reverse tcp:8081 tcp:3333

这会将设备端口 8081 重定向到本地端口 3333。

【讨论】:

以上是关于React Native:获取请求失败并出现错误 - TypeError:网络请求失败(...)的主要内容,如果未能解决你的问题,请参考以下文章

Axios 承诺处理 - 在 react-native 中获取“可能的未处理承诺拒绝 - 类型错误:网络请求失败”

本地主机上的 React Native 和 C# WebAPI 之间的获取命令返回网络请求失败错误

在 React native + expo 中获取抛出网络请求失败

android中的React-native POST请求通过https返回网络错误

react-native 网络请求错误

Android上的React Native Fetch返回网络请求失败