可以尝试通过设置连接超时和读取超时来解决此问题。以下是一个示例代码:
CloseableHttpClient client = HttpClients.createDefault();
HttpGet request = new HttpGet("http://example.com");
RequestConfig config = RequestConfig.custom()
.setConnectTimeout(5000)
.setSocketTimeout(5000)
.build();
request.setConfig(config);
try {
CloseableHttpResponse response = client.execute(request);
// process response
} catch (IOException e) {
// handle exception
} finally {
try {
client.close();
} catch (IOException e) {
// handle exception
}
}
在这个示例中,我们通过使用RequestConfig来设置连接超时和读取超时。连接超时设置为5000毫秒(即5秒钟),指的是在请求连接时等待响应的时间,如果超过这个时间还未响应,则抛出ConnectTimeoutException。读取超时设置也为5000毫秒,是指在从响应体中读取数据时的等待时间。如果超过这个时间还未读到数据,则抛出SocketTimeoutException。通过设置这两个超时时间,我们可以避免读取超时的问题。