HttpURLConnection设置请求超时无效的问题setConnectTimeout

1、问题描述

使用HttpURLConnection测试连通性的时候,发现请求超时无效;

时间单位是毫秒,然而我用于测试的内网地址和外网地址,大多数连接时长都少于1ms(如下图0.15ms),因此让我产生了连接超时不生效的错觉;

建议先将测试的地址,用谷歌浏览器调试的network先看下请求时长;

HttpURLConnection设置请求超时无效的问题setConnectTimeout_第1张图片

2、解决办法

用一个不正常的地址进行请求超时的测试,比如在A主机请求B服务器地址,将B服务器停掉进行测试;

 

3、测试代码如下:

public class HttpConnectionTest {

	public static void main(String[] args) {
		// 连接超时(豪秒)
		int connectTimeout = 10;
		// 接收数据超时(豪秒)
		int receiveTimeout = 6000;
		HttpURLConnection connection = null;
		try {
			connection = (HttpURLConnection) new URL("http://central.maven.org/maven2/").openConnection();
			connection.setConnectTimeout(connectTimeout);
			connection.setReadTimeout(receiveTimeout);
			connection.connect();
			if (HttpURLConnection.HTTP_OK != connection.getResponseCode()) {
				System.out.println("地址不可用");
			}
			System.out.println(connection.getResponseCode());
		} catch (IOException e) {
			System.out.println("地址请求或响应超时");
		} finally {
			if (connection != null) {
				connection.disconnect();
			}
		}
	}
}

 

你可能感兴趣的:(java)