无法在 React-native 中使用 127.0.0.1 从获取请求中获取响应

Posted

技术标签:

【中文标题】无法在 React-native 中使用 127.0.0.1 从获取请求中获取响应【英文标题】:Unable to get response from fetch request using 127.0.0.1 in React-native 【发布时间】:2019-09-20 21:14:39 【问题描述】:

我正在使用休息服务来获取我的 react-native android 应用程序的响应。每当我使用端口 8080 的 localhost(我尝试使用 127.0.0.1)但 fetch 给我 [TypeError: Network request failed]。没有本地主机,获取请求工作正常。与 Postman 一起使用时,Rest 服务运行良好。

我正在使用 expo 运行我的代码。 并且对于使用 Maven 的后端依赖。

我尝试使用物理设备和模拟器都失败了,检查了端口 9090。 我试图更改 application.properties 文件中的服务器地址,之后 spring-boot 后端停止,这是由于服务器地址配置问题。 (错误: 应用程序启动失败


说明:

配置为侦听端口 9090 的 Tomcat 连接器无法启动。该端口可能已在使用中,或者连接器可能配置错误。

行动:

验证连接器的配置,识别并停止正在侦听端口 9090 的任何进程,或将此应用程序配置为侦听另一个端口。)

insertPost()

return fetch('http://127.0.0.1:9090/getPost/PO397ba3306cc211e98f8249277cd661ec')
    .then(res => res.json())
    .then(json => 
        console.log(json)
    )
    .catch(error => console.error(error));

console.log(json) 应该打印从 fetch 返回的对象。

【问题讨论】:

你的 spring-boot 应用程序开始运行了吗?你可以通过 API 调用本身来访问你的控制器吗?如果您在该端口上运行了服务,为什么不更改您的 Spring Boot 配置以部署在 application.properties 文件中的不同端口上。 server.port=some other port 【参考方案1】:

您应该使用系统的“IP 地址”

http://YourIpAddress:9090/getPost/PO397ba3306cc211e98f8249277cd661ec

请检查您在同一网络中连接的设备和系统。请参考以下文档:

https://facebook.github.io/react-native/docs/running-on-device

【讨论】:

如果你想使用特定的端口,你需要反转它。例如adb reverse tcp:3000 tcp:3000【参考方案2】:

你不应该return fetch 函数。尝试删除return这个词,看看它是否有效。

【讨论】:

【参考方案3】:

试试这个,

http://10.0.2.2:portnumber/

10.0.2.2 - 主机环回接口的特殊别名(即开发机器上的 127.0.0.1)

【讨论】:

如何设置这个别名 尝试使用redir add tcp:oldportnumber:newportnumber 参考developer.android.com/studio/run/emulator-networking.html 以下命令设置了一个重定向,该重定向处理到 127.0.0.1:5000 上的主机(开发)机器的所有传入 TCP 连接,并将它们传递到 10.0.2.2:6000 上的模拟系统"重新添加 tcp:5000:6000" 你有没有像我一样尝试过这个,但仍然通过这个方法得到错误,因为它给出了错误(console.error: "Getting Error for fetch function", "line"..... ...."sourceURL":"192.168.43.252:19001/node_modules/expo/…) 顺便说一句,问题已经通过使用 Subhash Patel 提供的解决方案得到解决。

以上是关于无法在 React-native 中使用 127.0.0.1 从获取请求中获取响应的主要内容,如果未能解决你的问题,请参考以下文章

我无法在带有 redux 的 react-native 中使用地理定位

setParams无法在react-native中工作

react-native:无法使用发布模式访问Android权限

无法在 react-native 中获取 iOS 推送通知设备令牌

无法使用 react-native-svg 或 Svg/expo 让 Svg 显示在 react-native 中

在没有 GPS 的情况下,使用 navigator.geolocation 在 react-native 上无法获取当前位置