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

Android下Ktor Client调用本地服务器API(localhost/IP)失败求助

解决Android中Ktor Client调用本地服务器API的问题

针对Android模拟器的localhost访问问题

  • 不要直接使用localhost:8080,Android模拟器里的localhost指向模拟器自身,而非你的电脑本地服务器。
    • 若使用Android Studio自带模拟器,替换为10.0.2.2:8080,这是模拟器映射宿主电脑localhost的特殊IP。
    • 若使用Genymotion模拟器,改用10.0.3.2:8080。

本地IP无法访问的排查与解决

如果使用电脑本地IP(如192.168.x.x:8080)出现NoRouteToHostException,按以下步骤处理:

  • 确认Android设备(或模拟器)与运行服务器的电脑处于同一Wi-Fi局域网。
  • 关闭电脑防火墙,或在防火墙规则中允许服务器端口8080的入站请求,多数情况下防火墙会拦截局域网内的请求。
  • 检查AndroidManifest.xml是否添加必要网络权限:
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- Android 9及以上,若服务器用HTTP而非HTTPS,需允许明文请求 -->
    <application
        ...
        android:usesCleartextTraffic="true">
        ...
    </application>
    
  • 确认服务器监听地址不是127.0.0.1,需改为0.0.0.0,这样服务器才能接收局域网内其他设备的请求。比如Ktor服务器配置:
    fun main() {
        embeddedServer(Netty, host = "0.0.0.0", port = 8080) {
            // 路由配置
        }.start(wait = true)
    }
    

Ktor Client配置检查

确保Ktor Client没有多余代理或网络配置干扰请求:

val client = HttpClient(CIO) {
    defaultRequest {
        url("http://10.0.2.2:8080") // 模拟器用该地址,真机替换为电脑本地IP
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 03:42:04