今天做一个上传功能,一个200M的文件上传需要9分钟,设置了50秒的timeout一直不生效
RequestConfig resConf = RequestConfig.custom().setConnectTimeout(50000).setSocketTimeout(50000).setConnectionRequestTimeout(50000).build();
return HttpClientBuilder.create().setDefaultRequestConfig(resConf).build();
直接设置httppost的timeout也不起作用:
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 50*1000);
HttpConnectionParams.setSoTimeout(params, 50*1000);
httpPost.setParams(params);
原因:
connectionRequestTimeout是获取连接池连接的超时时间
connectionTimeout是建立连接的超时时间,
socketTimeout是等待服务器响应的超时时间
而上传文件是请求数据到服务器的时间,目前没有发现可以设置请求数据传送的超时时间。
以上