HttpURLConnection对象不能直接构造,需要通过URL.openConnection()来获得
HttpURLConnection对象,示例代码如下:
String szUrl = “http://www.ee2ee.com/”
URL url = new URL(szUrl)
HttpURLConnection urlCon = (HttpURLConnection)url.openConnection()
HttpURLConnection是基于HTTP协议的,其底层通过socket通信实现。如果不设置超时
(timeout),在网络异常的情况下,可能会导致程序僵死而不继续往下执行。可以通过以下两
个语句来设置相应的超时:
System.setProperty(“sun.net.client.defaultConnectTimeout”, 超时毫秒数字符串)
System.setProperty(“sun.net.client.defaultReadTimeout”, 超时毫秒数字符串)
其中: sun.net.client.defaultConnectTimeout:连接主机的超时时间(单位:毫秒)
sun.net.client.defaultReadTimeout:从主机读取数据的超时时间(单位:毫秒)
例如:
System.setProperty(“sun.net.client.defaultConnectTimeout”, “30000″)
System.setProperty(“sun.net.client.defaultReadTimeout”, “30000″)
JDK 1.5以前的版本,只能通过设置这两个系统属性来控制网络超时。在1.5中,还可以使用
HttpURLConnection的父类URLConnection的以下两个方法:
setConnectTimeout:设置连接主机超时(单位:毫秒)
setReadTimeout:设置从主机读取数据超时(单位:毫秒)
可以设置。可以设置,在httpsampler中点击高级选项,timeouts可以设置。每一个http请求的Advanced。高级。右边的timeout,设置成2000就行。
问题简化一下:对一个ip,一个线程请求100次。该次请求的响应时间为调用httpClient前的响应时间减去接收到httpClient响应的时间。注意,本次请求是否有效要判断。平均响应时间和最大响应时间只不过是响应时间的统计而已,可以用数据库来做。就是说数据库记录每次测试请求的响应时间,成功与否。统计数据最后出来。
只所以用多线程,是因为单线程顺序请求100次,不能模拟服务器真正的情况。