Eclipse中connectionTimeout未定义及OkHttpClient超时方法报错求助
解决OkHttpClient setConnectionTimeout/setReadTimeout方法未定义的问题
这个问题是OkHttp 3.x版本的API变更导致的——从3.x开始,OkHttpClient变成了不可变对象,所有配置(包括超时时间)都必须通过它的Builder类来设置,直接在OkHttpClient实例上是找不到这些setXXXTimeout方法的。
正确的实现步骤:
- 先创建
OkHttpClient.Builder实例,在Builder上调用超时配置方法 - 调用Builder的
build()方法生成最终的OkHttpClient实例
修正后的代码示例:
import okhttp3.OkHttpClient; import java.util.concurrent.TimeUnit; // 1. 创建Builder并配置超时参数 OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder(); clientBuilder.connectTimeout(3000, TimeUnit.MILLISECONDS); // 注意方法名改为connectTimeout,去掉了set前缀 clientBuilder.readTimeout(3000, TimeUnit.MILLISECONDS); // 2. 生成不可变的OkHttpClient实例 OkHttpClient httpParameters = clientBuilder.build();
额外说明:
- 方法名有小调整:原
setConnectionTimeout改为connectTimeout,setReadTimeout改为readTimeout(移除了set前缀) - 你之前导入的
org.apache.http.impl.client.HttpClientBuilder和当前问题无关,如果没有用到可以删除 - 直接
new OkHttpClient.Builder()即可使用,之前导入的okhttp3.OkHttpClient.Builder可以保留,也可以删除不影响使用
这样修改后,就不会再出现方法未定义的错误啦!
内容的提问来源于stack exchange,提问作者nan
相关产品推荐
相关产品推荐

