🚀记 React-Native 调试 Android 无法访问 127.0.0.1

2,385 阅读1分钟

最近在学习React-native的一些知识,本着学以致用的精神做了一些小Demo

在调试 Android 的时候发现了一些有趣的小问题。

我本地的接口是 http://127.0.0.1:1235/api 我发现在 Android Studio 模拟器中接口没有返回值了,而且查不到 fetch 请求, charles 抓包也抓不到请求,很是郁闷。

但是我在模拟器中访问 www.baidu.com (百度真的可以用来测网络通不通) 发现是可以访问的,证明模拟器的网络没有问题。

我开启了 Ios 模拟器,访问 http//127.0.0.1:1235/api xxxx 也能获取到返回值,这也就证明本地接口也没有问题。

但是当我通过Android 模拟器访问 127.0.0.1:1235 的时候却访问不到了。

Ios 模拟器下可以访问本地api,而且fetch 也没有被catch住 (可以看我另一篇文章,之前有因为catch导致网络请求不成功)

到这里我感觉大概是因为 Android 模拟器有什么东西阻止了我发起http请求,于是乎我就查了一下 Android Studio 模拟器的一些问题。

最终我找到了问题的所在。

原来在Android Stuidio 模拟器中,http://127.0.0.1 其实代表模拟器本身,而我访问127.0.0.1 其实就是在访问我自己。

而我自己又没有任何服务。而宿主机(做docker反正是这么叫,这里姑且也这么叫了)被映射到了 10.0.2.2 所以只需要通过 10.0.2.2 来请求Api接口就可以得到返回的数据了。

虽然问题是很简单的,但是也算是一个收获。 希望这篇文章可以帮助和我一样碰到这种问题的同学。