Android模拟器与Wiremock Standalone连接失败问题求助
问题诊断与解决方案
核心问题定位
你遇到的问题本质是模拟器代理指向的localhost并非宿主机的WireMock服务,同时全局代理导致非Mock请求无法正常转发,进而触发“无法提供互联网”的错误。
1. 修正WireMock监听地址与模拟器代理配置
- WireMock默认仅监听
localhost(127.0.0.1),这意味着只有宿主机本身能访问,模拟器的localhost指向的是模拟器自身,而非你的电脑。启动WireMock时需绑定所有网卡:java -jar wiremock-standalone-xxx.jar --port 8080 --bind-address 0.0.0.0 - 模拟器代理地址不能用
localhost,需替换为Android模拟器专属的宿主机IP:10.0.2.2(Google官方AVD的标准地址),所以代理设置应为10.0.2.2:8080
2. 验证代理连通性
在模拟器的浏览器中输入http://10.0.2.2:8080/__admin/,如果能加载WireMock的管理界面,说明代理链路已通;如果无法访问:
- 检查宿主机防火墙是否放行8080端口
- 确认WireMock启动日志中存在
bind to 0.0.0.0的提示
3. 解决“无法提供互联网”错误
全局代理会让应用所有请求都走WireMock,但WireMock仅处理你配置的映射规则,未匹配的请求会被直接拒绝,导致无网络提示。两种解决思路:
- 转发非Mock请求:在WireMock的
mappings文件夹中添加一个兜底转发映射,让未匹配的请求转发到真实网络:{ "request": { "method": "ANY", "urlPattern": ".*" }, "response": { "proxyBaseUrl": "https://你的应用真实后端域名", "followRedirects": true } } - 缩小代理范围:如果模拟器支持,仅给应用的目标Mock域名设置代理;或在系统代理的“例外列表”中添加不需要Mock的域名(如公共服务域名),让这些请求直接走真实网络
4. 确认请求匹配规则
如果代理连通后仍无请求命中WireMock:
- 打开WireMock管理界面的
/__admin/requests页面,查看是否有请求进入 - 检查映射文件中的
url/urlPattern是否与应用实际请求路径完全匹配(注意路径前缀、参数、HTTP方法是否一致)
内容的提问来源于stack exchange,提问作者Siva2789
相关产品推荐
相关产品推荐

