You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask+Kotlin Retrofit无法通过IP访问API接口报127.0.0.1连接失败

问题排查与解决方案

1. 解决请求地址不匹配问题

你当前报错显示应用实际请求的是127.0.0.1:5000,和你代码中配置的192.168.0.185:3000完全不一致,属于旧代码缓存未清理导致的问题:

  • 打开Android Studio,点击File → Invalidate Caches
  • 勾选Clear file system cache and local history,点击Invalidate and Restart重启编辑器
  • 重新编译项目运行,确保新的BASE_URL配置生效

2. 修正Retrofit BaseUrl格式

Retrofit要求BaseUrl末尾必须加斜杠,否则拼接接口路径时会出现地址错误:
修改Constants.kt中的BASE_URL为:

const val BASE_URL = "http://192.168.0.185:3000/"

如果是模拟器访问,改为:

const val BASE_URL = "http://10.0.2.2:3000/"

3. 配置安卓明文网络权限

安卓9及以上版本默认禁止HTTP明文请求,你使用的HTTP协议需要额外配置许可:

  1. 在res/xml目录下新建network_security_config.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <!-- 实体机访问局域网服务配置 -->
        <domain includeSubdomains="true">192.168.0.185</domain>
        <!-- 模拟器访问本地服务配置 -->
        <domain includeSubdomains="true">10.0.2.2</domain>
    </domain-config>
</network-security-config>
  1. 在AndroidManifest.xml的application标签中添加属性:
<application
    ...
    android:networkSecurityConfig="@xml/network_security_config">

4. 解决实体机访问失败问题

你提到模拟器已经可以正常访问,实体机访问失败优先排查局域网限制:

  • 关闭运行Flask服务的电脑的系统防火墙,或者在防火墙入站规则中开放3000端口的TCP访问权限
  • 确认手机和电脑连接的是同一个WiFi,且路由器没有开启AP隔离功能
  • 先在手机自带浏览器中访问http://192.168.0.185:3000/adamapi,确认可以正常拿到返回数据后再测试应用

内容的提问来源于stack exchange,提问作者yras8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:51:02