Tôi đang sử dụng HttpClient 4.1.2. Đặt ConnectionTimeout và SocketTimeout thành một giá trị không bao giờ hiệu quả.Java: HttpClient 4.1.2: ConnectionTimeout, giá trị SocketTimeout được đặt không hiệu quả
mã:
Long startTime = null;
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(params, 30);
HttpConnectionParams.setSoTimeout(params, 60);
HttpGet httpget = new HttpGet("http://localhost:8080/Test/ScteServer");
try {
startTime = System.currentTimeMillis();
HttpResponse response = httpClient.execute(httpget);
}
catch(SocketTimeoutException se) {
Long endTime = System.currentTimeMillis();
System.out.println("SocketTimeoutException :: time elapsed :: " + (endTime-startTime));
se.printStackTrace();
}
catch(ConnectTimeoutException cte) {
Long endTime = System.currentTimeMillis();
System.out.println("ConnectTimeoutException :: time elapsed :: " + (endTime-startTime));
cte.printStackTrace();
}
catch (ClientProtocolException e) {
e.printStackTrace();
}
catch (IOException e) {
Long endTime = System.currentTimeMillis();
System.out.println("IOException :: time elapsed :: " + (endTime-startTime));
e.printStackTrace();
}
Nếu server bị down, sau đó thời gian chờ kết nối là không bao giờ trước 400 ms khi nó có để thời gian chờ tại ~ 30 ms như cấu hình.
Tương tự trường hợp cho Thời gian chờ của ổ cắm, việc đặt một giấc ngủ vào doGet() trong 5000 mili giây sẽ làm mất thời gian chờ của ổ cắm sẽ không bao giờ ở khoảng 60 mili giây như được định cấu hình. Phải mất hơn 500 ms.
Có ai có thể gợi ý cách cấu hình HttpClient 4.1.2 sao cho nó có thời gian trong khoảng thời gian đã định cấu hình?
Ném 'java.lang.UnsupportedOperationException' – Niklas
' httpclient.getParams() 'bị phản đối từ 4.3 – oleh