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

物理安卓设备访问本地FastAPI接口返回空?求解决方法

解决物理安卓设备无法访问FastAPI接口的方案

1. 修改FastAPI的绑定地址

默认启动时FastAPI仅绑定127.0.0.1,仅本地可访问。需改为绑定0.0.0.0以监听所有网卡请求:

if __name__ == "__main__":
    import uvicorn
    uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)

或通过命令行启动:

uvicorn main:app --host 0.0.0.0 --port 8000 --reload

2. 确认笔记本IPv4地址准确性

  • Windows:执行ipconfig,找到当前WiFi网卡的IPv4地址
  • Mac/Linux:执行ifconfig或ip addr,获取WiFi对应的IPv4
  • 确保手机访问地址为http://[笔记本IPv4]:8000/predict?age=12&sex=M,避免地址/端口写错

3. 关闭或配置笔记本防火墙

防火墙可能拦截外部设备请求:

  • Windows:打开「Windows Defender防火墙」,临时关闭或添加入站规则允许8000端口
  • Mac:进入「系统设置-网络-防火墙」,添加允许Python/uvicorn的入站连接
  • Linux:执行sudo ufw allow 8000开放8000端口

4. 验证网络连通性

  • 用手机ping笔记本IPv4(可借助Termux等工具),确认是否能连通
  • 检查手机与笔记本是否在同一WiFi主网络,避免路由器将设备分到隔离子网(如访客网络)

5. 排查接口返回空值的逻辑问题

若能连通但返回空值,需检查接口逻辑:

  • 添加日志打印请求参数与返回值,确认是否收到手机请求:
from fastapi import FastAPI, Query
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

app = FastAPI()

@app.get("/predict")
async def predict(age: int = Query(...), sex: str = Query(...)):
    logger.info(f"收到请求: age={age}, sex={sex}")
    # 业务逻辑示例
    result = {"age": age, "sex": sex, "prediction": "示例结果"}
    logger.info(f"返回结果: {result}")
    return result
  • 检查手机请求参数是否正确,比如参数名拼写、格式是否符合接口要求(如age需为整数)

6. 测试端口开放状态

用手机端端口扫描工具,扫描笔记本IPv4的8000端口,确认端口处于开放状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:33:16