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

Android应用Retrofit API在WiFi下加载超时,移动数据正常求助

问题排查与解决方案
  • 办公WiFi代理/流量限制
    办公网络大概率存在代理设置或域名限流,其他应用可能自动适配了代理,但Retrofit默认没配置。你可以手动给OkHttpClient添加代理配置:

    val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress("你的办公代理地址", 代理端口))
    val okHttpClient = OkHttpClient.Builder()
        .proxy(proxy)
        .build()
    // 把这个client传给Retrofit实例
    

    同时用命令行测试API域名的连通性,确认是否被屏蔽:

    ping your-api-domain.com
    traceroute your-api-domain.com
    
  • DNS解析异常
    办公WiFi的DNS服务器可能对API域名解析慢或者返回异常IP。可以给Retrofit配置自定义DNS,优先选择可快速访问的IP:

    val customDns = Dns { hostname ->
        val addresses = InetAddress.getAllByName(hostname)
        addresses.sortedBy { it.isReachable(1000) } // 筛选1秒内可连通的IP
    }
    val okHttpClient = OkHttpClient.Builder()
        .dns(customDns)
        .build()
    
  • TCP连接复用失效
    办公网络可能限制长连接,导致每次请求都要重新建立TCP连接,拖慢速度。调整OkHttpClient的连接池参数,优化连接复用:

    val connectionPool = ConnectionPool(
        maxIdleConnections = 5,
        keepAliveDuration = 5,
        timeUnit = TimeUnit.MINUTES
    )
    val okHttpClient = OkHttpClient.Builder()
        .connectionPool(connectionPool)
        .build()
    
  • 超时配置过短
    检查当前Retrofit的超时设置,办公网络波动大,默认超时可能不够,适当延长:

    val okHttpClient = OkHttpClient.Builder()
        .connectTimeout(30, TimeUnit.SECONDS)
        .readTimeout(30, TimeUnit.SECONDS)
        .writeTimeout(30, TimeUnit.SECONDS)
        .build()
    
  • API服务器端限流
    联系后端团队,检查服务器是否对办公WiFi的公网IP段做了带宽限流或请求频率限制,查看访问日志确认是否有被拦截的请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:58:33