代码拉取完成,页面将自动刷新
Forest: 1.5.0
Backend: okhttp:3.8.1、httpclient:4.5.9
Spring Boot工程在配置Forest连接超时时间forest.connect-timeout = 10000不生效
查看OkHttp3ConnectionManager和HttpclientConnectionManager源码,发现:
okhttp设置connectTimeout和readTimout都是用的forest.timeout配置
public OkHttpClient getClient(ForestRequest request, LifeCycleHandler lifeCycleHandler) {
// 省略代码..............
OkHttpClient.Builder builder = new OkHttpClient.Builder()
.connectionPool(pool)
.connectTimeout(timeout, TimeUnit.MILLISECONDS)
.readTimeout(timeout, TimeUnit.MILLISECONDS)
.cookieJar(new CookieJar() {
@Override
public void saveFromResponse(HttpUrl url, List<Cookie> okCookies) {
ForestCookies cookies = new ForestCookies();
for (Cookie okCookie: okCookies) {
ForestCookie cookie = ForestCookie.createFromOkHttpCookie(okCookie);
cookies.addCookie(cookie);
}
lifeCycleHandler.handleSaveCookie(request, cookies);
}
httpclient设置setConnectTimeout和setSocketTimeout使用的forest.timeout配置,代码如下:
public HttpClient getHttpClient(ForestRequest request, CookieStore cookieStore) {
//省略代码...........
RequestConfig.Builder configBuilder = RequestConfig.custom();
// 设置连接超时
configBuilder.setConnectTimeout(request.getTimeout());
// 设置读取超时
Integer timeout = request.getTimeout();
if (timeout == null) {
timeout = request.getConfiguration().getTimeout();
}
configBuilder.setSocketTimeout(timeout);
// 设置从连接池获取连接实例的超时
configBuilder.setConnectionRequestTimeout(HttpConnectionConstants.DEFAULT_READ_TIMEOUT);
// 省略代码.........
不知道开发者为啥这样做,是否出于某些原因,如果是出于某些原因,应该修改官方文档去掉forest.connect-timeout配置说明,并修改forest.timeout配置的作用