无法在 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 中使用地理定位
react-native:无法使用发布模式访问Android权限
无法在 react-native 中获取 iOS 推送通知设备令牌
无法使用 react-native-svg 或 Svg/expo 让 Svg 显示在 react-native 中
在没有 GPS 的情况下,使用 navigator.geolocation 在 react-native 上无法获取当前位置