在我的代码中,我正在调用一个外部Web服务,以使用HTTP Client Get请求获得响应。在此服务可能会延迟最多5分钟才能给出响应。所以我必须做下面的事情。 1.要设置请求超时(不知道怎么做) 2.致电服务,并将时间限制设置为可以等待响应的时间(以我为例,我希望将时间限制设置为5分钟)
任何人都可以建议我如何实现这两个目标。
谢谢
Sudheer
答案 0 :(得分:1)
您可以使用以下方法设置请求超时时间:
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(30 * 1000).build();
HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();
要设置响应超时,您可以将调用包装在线程中并为该线程设置超时。
PFB下面的代码段:
Future<T> future = null;
future = pool.submit(new Callable<T>() {
public T call() {
return executeImpl(url);
}
});
try {
return future.get(10, TimeUnit.SECONDS);
}
catch (InterruptedException e) {
log.warn("task interrupted", name);
}
catch (ExecutionException e) {
log.error(name + " execution exception", e);
}
catch (TimeoutException e) {
log.debug("future timed out", name);
}