Android(Kotlin)连接本地Django服务器失败求助
问题描述
用Kotlin开发Android应用,向本地Django服务器发起请求时遇到连接错误:
HTTP FAILED: java.net.ConnectException: Failed to connect to /127.0.0.1:8000
服务器部署在127.0.0.1:8000,Android端基础URL设为http://127.0.0.1:8000/api,模拟器和实体设备测试均失败。尝试过以下方案但未解决:
- 替换为PC本地IP(如
192.168.0.102) - 用
0.0.0.0:8000启动服务器 - 在Django的
settings.py的ALLOWED_HOSTS添加PC IP - 模拟器用
10.0.2.2 - 给8000端口加防火墙例外
- 用
192.168.0.102:8000启动服务器
对应结果:
HTTP FAILED: java.net.ConnectException: Failed to connect to /192.168.0.102:80- 同结果1
- 同结果1
HTTP FAILED: java.net.ConnectException: Failed to connect to /10.0.0.2:8000和HTTP FAILED: java.net.ConnectException: Failed to connect to /10.0.0.2:80- 同结果1
- 返回
400 Bad Request
PC和设备连同一Wi-Fi,PC浏览器能正常访问http://127.0.0.1:8000,但Android设备无法访问。
解决方案
1. 确认网络连通性
- 用Android设备的浏览器直接访问
http://[你的PC本地IP]:8000,如果打不开,先排查网络:- 检查PC和设备是否真的在同一Wi-Fi网段(部分路由器双频段隔离,避免PC连5G、设备连2.4G)
- PC端执行
ping [设备IP],设备端执行ping [PC IP],确认双向连通 - 彻底关闭PC的防火墙(包括Windows Defender、第三方杀毒软件防火墙)后重试
2. 修正Django服务器配置
- 启动服务器时必须绑定到外部可访问的地址,不能仅绑定
127.0.0.1:python manage.py runserver 0.0.0.0:8000 - 更新
settings.py的ALLOWED_HOSTS,添加PC本地IP或通配符(仅测试环境使用):ALLOWED_HOSTS = ['192.168.0.102', '0.0.0.0', 'localhost']
3. 修正Android端URL配置
- 确保基础URL完整,不要遗漏端口
8000,正确格式为http://192.168.0.102:8000/api(之前错误出现连接:80,大概率是URL配置丢失了端口) - 模拟器需使用
10.0.2.2代替PC IP,正确URL为http://10.0.2.2:8000/api(注意是10.0.2.2而非你之前写错的10.0.0.2)
4. 处理400 Bad Request错误
当返回400时,说明网络已连通,问题出在请求本身:
- 检查请求参数是否符合Django接口要求(字段名、数据格式、必填参数是否齐全)
- 确认请求头配置正确(比如POST请求需设置
Content-Type: application/json) - 开启Django调试模式查看具体错误:
查看Django控制台的错误日志,或在Android端打印响应的错误详情DEBUG = True
5. 检查Android网络权限
确保AndroidManifest.xml中添加必要权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Android 9及以上默认禁止明文HTTP请求,需在application标签添加:
android:usesCleartextTraffic="true"
内容的提问来源于stack exchange,提问作者Radin
相关产品推荐
相关产品推荐

