如何将本地Django Rest API连接到Android模拟器?解决端口443异常
问题解答:Android模拟器连接Django Rest API遇端口443问题
一、443端口是什么?
443是HTTPS协议的默认端口,专门用于加密的HTTP通信,和普通HTTP使用的80端口对应。你遇到的错误,本质是Flutter安卓应用在尝试用HTTPS访问你的Django API,但你的Django开发服务器只运行在HTTP的8000端口,因此出现资源找不到的报错。
二、正确连接Android模拟器到Django API的步骤
1. 修正Flutter的BASE_URL配置
安卓模拟器的127.0.0.1指向它自身的本地回环地址,不是你的电脑,所以不能直接用这个地址访问Django服务器。你需要用模拟器专属的网关地址:
- 原生Android模拟器:使用
10.0.2.2:8000,BASE_URL修改为:const BASE_URL = "http://10.0.2.2:8000"; - Genymotion模拟器:对应的地址是
10.0.3.2:8000
2. 让Django服务器接受外部请求
启动Django开发服务器时,要绑定0.0.0.0,这样才能接收来自模拟器的请求:
python manage.py runserver 0.0.0.0:8000
同时检查settings.py里的ALLOWED_HOSTS,确保包含你的电脑本地IP(比如192.168.x.x),开发环境下也可以临时用['*'](生产环境禁止这么做):
ALLOWED_HOSTS = ['127.0.0.1', 'localhost', '192.168.x.x', '0.0.0.0']
3. 确认CORS配置生效
已经安装corsheaders的情况下,要确保settings.py里的配置正确:
INSTALLED_APPS = [ # ...其他已安装应用 'corsheaders', ] MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', # 必须放在CommonMiddleware之前 'django.middleware.common.CommonMiddleware', # ...其他中间件 ] # 开发环境允许所有来源,生产环境要指定具体域名 CORS_ALLOW_ALL_ORIGINS = True
4. 排查HTTPS强制问题
检查Flutter代码里有没有强制使用HTTPS:
- 确保URL是
http://开头,不是https:// - 检查HTTP请求库的配置,有没有自动跳转HTTPS的设置,这类设置会导致请求转向443端口,需要关闭
内容的提问来源于stack exchange,提问作者amyhawks
相关产品推荐
相关产品推荐

