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

Android平台Retrofit2不创建OkHttpClient能否设置超时?OkHttp是否为默认客户端?

问题解答

是的,Retrofit默认就是使用OkHttp作为底层HTTP客户端——哪怕你没在Retrofit.Builder里显式调用.client()传入自定义实例,Retrofit内部也会自动创建一个默认配置的OkHttpClient来处理所有网络请求。

至于设置超时必须自定义OkHttpClient的原因:Retrofit本身并没有直接暴露超时配置的API,所有网络层面的参数(包括超时、拦截器、缓存等),都需要通过底层的OkHttpClient来调整。默认的OkHttpClient用的是OkHttp的内置默认值(比如连接/读取/写入超时各10秒),如果要修改这些值,就必须自己构建一个配置好的OkHttpClient实例,再传给Retrofit。

给你一个直接能用的示例代码:

// 先构建配置好超时的OkHttpClient
OkHttpClient okHttpClient = new OkHttpClient.Builder()
    .connectTimeout(30, TimeUnit.SECONDS) // 连接超时30秒
    .readTimeout(30, TimeUnit.SECONDS)    // 读取超时30秒
    .writeTimeout(30, TimeUnit.SECONDS)   // 写入超时30秒
    .build();

// 再把这个客户端传给Retrofit
Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(BASE_URL)
    .client(okHttpClient) // 显式传入自定义客户端
    .addConverterFactory(GsonConverterFactory.create(gson))
    .build();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:01:12