Android模拟器能否将10.0.2.2替换为localhost?如何操作?
IIS Express与Android模拟器访问问题解决方案
直接把10.0.2.2替换成localhost在模拟器里直接访问是不行的,但可以通过配置IIS Express允许外部访问,再配合模拟器的地址映射或者代码调整来实现需求,具体操作如下:
1. 让IIS Express接受外部请求
默认IIS Express只认localhost,得改配置放开权限:
- 找到
C:\Users\[你的用户名]\Documents\IISExpress\config\applicationhost.config文件 - 搜索你项目的
<site>节点,找到里面的<bindings>段落 - 原来的绑定一般是
<binding protocol="http" bindingInformation="*:端口号:localhost" />,新增一条绑定:
嫌麻烦的话,直接绑定所有地址更省事:<binding protocol="http" bindingInformation="*:端口号:10.0.2.2" /><binding protocol="http" bindingInformation="*:端口号:*" /> - 保存文件后重启IIS Express
2. 模拟器端的地址处理
如果想在App代码里写localhost就能访问,有两种方式:
方式一:修改模拟器hosts(需root权限)
- 用
adb shell进入模拟器终端,或者通过Android Studio的Device File Explorer找到/system/etc/hosts文件 - 添加一行:
10.0.2.2 localhost,保存后重启模拟器
方式二:代码里做环境判断替换
更实用的是在App的网络请求工具类里加判断:如果是Android模拟器环境,就把请求地址里的localhost替换成10.0.2.2。比如安卓里可以通过判断Build.FINGERPRINT是否包含emulator来识别模拟器。
3. 解决之前的Bad Request错误
之前用10.0.2.2访问报Bad Request,本质是IIS Express没授权这个地址的请求,做完第一步的绑定配置后,这个问题基本就能解决。另外记得检查防火墙有没有拦截该端口,临时关闭测试或者给IIS Express添加防火墙允许规则。
内容的提问来源于stack exchange,提问作者js u
相关产品推荐
相关产品推荐

