在Java中,当你使用HTTP客户端(如HttpClient)发起请求时,可以设置连接超时和读取超时。以下是使用Java 11中的HttpClient设置超时的示例:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class Main {
public static void main(String[] args) {
HttpClient httpClient = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10)) // 设置连接超时
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.timeout(Duration.ofSeconds(5)) // 设置读取超时
.GET()
.build();
try {
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("Status code: " + response.statusCode());
System.out.println("Response body: " + response.body());
} catch (Exception e) {
e.printStackTrace();
}
}
}
在这个示例中,我们设置了连接超时为10秒,读取超时为5秒。如果在这段时间内无法建立连接或读取响应,将会抛出异常。
如果你使用的是其他HTTP客户端库(如Apache HttpClient),设置超时的方法可能会有所不同。以下是使用Apache HttpClient设置超时的示例:
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
public class Main {
public static void main(String[] args) {
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(10000) // 设置连接超时(毫秒)
.setSocketTimeout(5000) // 设置读取超时(毫秒)
.build();
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.build();
HttpGet request = new HttpGet("https://example.com");
try (CloseableHttpResponse response = httpClient.execute(request)) {
System.out.println("Status code: " + response.getStatusLine().getStatusCode());
System.out.println("Response body: " + EntityUtils.toString(response.getEntity()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
在这个示例中,我们同样设置了连接超时为10秒,读取超时为5秒。如果在这段时间内无法建立连接或读取响应,将会抛出异常。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。