我在我的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的日志,他们根本不会注册请求.
您无法访问本地开发服务器,因为该端口尚未由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.
你应该好好接受这个.