【发布时间】:2016-02-15 16:57:51
【问题描述】:
我在我的 react-native Android 应用中使用 fetch API 向本地 API 发出请求。我通常在 http://localhost:8163 从 react web 应用程序中查询上述 API。
我正在我的物理设备上以调试器模式测试我的应用程序。我在某处读到 react-native 无法像 Web 应用程序那样查询 localhost。显然你必须使用http://10.0.2.2:[PORT_NUMBER_HERE]/,它是根据Android emulator docks 的`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: Network request failed(...)。检查我的本地 API 的日志,他们根本没有注册请求。
所以我不知道我是否正确查询本地 API 以获取我想要的资源,如果是,我不知道为什么获取失败。
【问题讨论】:
-
是的,那是因为您的 android 模拟器与本地开发计算机不同。对于物理设备,这就像在不同的机器上进行测试一样:要么拥有名称解析系统,要么使用 IP 地址
-
@njzk2 你能详细说明一下吗?我有同样的问题,但不确定名称解析系统是什么意思?我按照 react-native 文档中的要求使用计算机的 IP 地址..
-
@Andrea.cabral 名称解析通常由 DNS 完成。
-
你解决了吗?
标签: android react-native