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

The Cat Api添加x-api-key请求时Retrofit出现SocketTimeout问题

问题解决方案

核心原因

你遇到的超时问题主要由OkHttp的超时配置不完整导致:

  • 你仅配置了连接超时,未设置读取超时和写入超时,OkHttp默认读取超时仅为10秒。未携带x-api-key时,TheCatAPI对未认证用户的limit参数有最大10条的限制,即便你传了100也只会返回10条数据,响应速度快不会触发超时;携带有效API密钥后,服务端会完整返回100条对应数据,响应时间超过10秒触发SocketTimeoutException。
  • 次要排查点:确认你替换API密钥时没有保留代码示例里的{}符号,仅填写你的纯密钥字符串即可。

修正代码

调整OkHttp的超时配置即可解决:

fun create(): CatApiService {
    val client = OkHttpClient.Builder()
        // 连接超时设置30秒即可,无需配置为10天
        .connectTimeout(30, TimeUnit.SECONDS)
        // 新增读取超时配置,适配大体积返回数据
        .readTimeout(60, TimeUnit.SECONDS)
        // 新增写入超时配置
        .writeTimeout(30, TimeUnit.SECONDS)
        .addInterceptor(Interceptor { chain ->
            val request = chain.request().newBuilder()
                .addHeader("x-api-key", "你的实际API密钥,不要包含{}")
                .build()
            return@Interceptor chain.proceed(request)
        })
        .build()
    return Retrofit.Builder()
        .baseUrl(BASE_URL)
        .client(client)
        .addConverterFactory(GsonConverterFactory.create())
        .build()
        .create(CatApiService::class.java)
}

额外优化建议

  • 不要使用GlobalScope发起网络请求,页面销毁时请求不会自动取消,容易引发内存泄漏和崩溃,建议替换为lifecycleScope.launch绑定Activity生命周期。
  • 网络请求建议添加try-catch捕获异常,避免无网、服务端异常时直接导致应用崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:15:08