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

Flutter应用从本地localhost获取JSON数据:安卓模拟器配置求助

我之前开发的时候也踩过这个坑!安卓模拟器没办法直接用localhost访问你电脑上的本地Django服务器,得做几个关键配置调整,我一步步给你说清楚:

第一步:先确保本地Django服务器能被外部访问

别着急调模拟器,先确认你的Django服务器不是只绑定在本地回环地址上。默认的python manage.py runserver只会监听127.0.0.1,这样只有你电脑自己能访问,模拟器根本连不上。

解决方法:启动服务器的时候指定监听所有网卡:

python manage.py runserver 0.0.0.0:8000

然后在你电脑的浏览器里输入你的本地IP地址+端口(比如192.168.1.5:8000),访问你的API接口,确认能正常返回JSON数据。这一步能先排除服务器本身的问题。

第二步:安卓模拟器的特殊配置

安卓模拟器里的localhost是指向模拟器自身的,不是你的电脑,所以得用专门的映射地址:

  • 如果你用的是Android Studio自带的模拟器,直接用10.0.2.2代替localhost,这个是谷歌预设的指向宿主机(你的电脑)的地址;
  • 如果你用的是Genymotion模拟器,则需要用10.0.3.2;

另外,安卓9(API 28)及以上的系统默认禁止明文HTTP请求,如果你本地服务器没配置HTTPS,得手动允许明文请求:
打开Flutter项目里的android/app/src/main/AndroidManifest.xml,在<application>标签里添加属性:

<application
    ...
    android:usesCleartextTraffic="true">
    ...
</application>
第三步:修改Flutter里的请求地址

把你原来的请求URL从http://localhost:8000/api/your-endpoint改成对应的模拟器地址,比如:

// Android Studio模拟器用这个
final response = await http.get(Uri.parse('http://10.0.2.2:8000/api/your-endpoint'));

如果用Dio库的话,同理替换baseUrl:

final dio = Dio(BaseOptions(baseUrl: 'http://10.0.2.2:8000/api/'));
额外排查小技巧
  • 检查电脑防火墙:有时候防火墙会挡住模拟器的请求,暂时关闭防火墙测试一下,如果能连上了,就给8000端口添加入站规则;
  • 跨域问题:如果Django返回跨域错误,安装django-cors-headers,然后在settings.py里配置允许所有来源(开发环境没问题):
    INSTALLED_APPS = [
        ...
        'corsheaders',
        ...
    ]
    
    MIDDLEWARE = [
        ...
        'corsheaders.middleware.CorsMiddleware',
        'django.middleware.common.CommonMiddleware',
        ...
    ]
    
    CORS_ALLOW_ALL_ORIGINS = True
    
  • 真机测试的话:确保手机和电脑在同一个WiFi下,用电脑的本地IP(比如192.168.1.5)代替10.0.2.2就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:52:00