React Native Android Fetch在连接到本地API时失败

前端之家收集整理的这篇文章主要介绍了React Native Android Fetch在连接到本地API时失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的react-native Android应用程序中使用fetch API来向本地API发出请求.我通常在 http://localhost:8163处从反应网络应用程序查询所述API.

我正在调试器模式下在我的物理设备上测试我的应用程序.我读到某个地方反应本机不能像web应用一样查询localhost.显然你必须使用http://10.0.2.2:[PORT_NUMBER_HERE]/这是根据Android模拟器底座的`http://127.0.0.1:[PORT_NUMBER_HERE]的别名.我不确定这是否是我应该在物理设备上进行测试的.

我的获取代码如下所示:

fetchToken() {
    fetch('http://10.0.2.2:8163/extension/auth',{
        method: 'GET',headers: {
            'Accept': 'application/json','Content-type': 'application/json'
        }
    })
    .then((response)) => console.log('successful fetchToken response: ',response.json()))
    .catch((error) => console.log('fetchToken error: ',error))
    .done();
}

请求总是挂起一段时间然后到达catch块并且无效错误TypeError:网络请求失败(…).检查我的本地API的日志,他们根本不会注册请求.

所以我不知道我是否正确查询我的本地API以获取我想要的资源,如果我是,我不知道为什么获取失败.

您无法访问本地开发服务器,因为该端口尚未由ADB转发.当您运行react-native run-android时,React Native将端口8081映射到USB上的移动设备.当您断开USB连接时,您将无法再刷新或热重新加载代码.所以在这种情况下你可以做两件事,就像React Native那样映射你的本地服务器端口,或者使用你的本地IP地址.

>映射端口

这仅适用于使用Android 6.0的情况.要使用ADB转发端口,请在终端中运行以下命令:

adb reverse tcp:8163 tcp:8163

这会将您的本地8163端口映射到移动设备的8163端口.您将能够以这种方式访问​​您的开发服务器.
>使用本地IP地址

您还可以在React Native开发应用程序上使用本地IP,无需USB即可重新加载它们.摇动设备或长按菜单按钮打开开发人员菜单.打开开发设置,然后点击调试服务器主机&设备端口.在这里,您可以输入机器的本地IP,端口号为8081.如果你的机器的IP是192.168.1.100,那么你在这里输入192.168.1.100:8081以便成功连接.现在我们已经介绍了我们可以重新加载应用程序.在此之后,当您要使用本地计算机的开发服务器时,请使用与服务器端口号相同的IP.

你应该好好接受这个.

猜你在找的React相关文章