Tôi cần đặt thời gian cho yêu cầu Http chúng tôi thực hiện cho dịch vụ (không phải dịch vụ web). Chúng tôi đang sử dụng Apache HTTP Client. Tôi đã thêm 2 dòng mã này để đặt thời gian ra theo yêu cầu và phản hồi dịch vụ.Sử dụng Apache HttpClient cách đặt TIMEOUT theo yêu cầu và phản hồi
HttpConnectionParams.setConnectionTimeout(params, 10000);
HttpConnectionParams.setSoTimeout(params, 10000);
1) Hiện tại tôi đã đặt 10 giây làm thời gian chờ vì tôi thấy phản hồi đến từ dịch vụ gần như ngay lập tức. Tôi có nên tăng hoặc giảm thời gian không?
2) Điều gì sẽ xảy ra khi phản hồi mất hơn 10 giây? Nó sẽ ném ngoại lệ và nó sẽ là ngoại lệ nào? Có điều gì khác tôi cần phải thêm để đặt thời gian ra trong mã dưới đây.
public HashMap<String, Object> getJSONData(String url) throw Exception{
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(params, 10000);
HttpConnectionParams.setSoTimeout(params, 10000);
HttpHost proxy = new HttpHost(getProxy(), getProxyPort());
ConnRouteParams.setDefaultProxy(params, proxy);
URI uri;
InputStream data = null;
try {
uri = new URI(url);
HttpGet method = new HttpGet(uri);
HttpResponse response = httpClient.execute(method);
data = response.getEntity().getContent();
}
catch (Exception e) {
e.printStackTrace();
}
Reader r = new InputStreamReader(data);
HashMap<String, Object> jsonObj = (HashMap<String, Object>) GenericJSONUtil.fromJson(r);
return jsonObj;
}
Tôi cần phải thiết lập/thêm gì nếu tôi phải cho phép Thời gian đáp ứng đầy đủ đến – pushya
Bạn có thể giải thích ý nghĩa của 4 socket đọc không? Nếu chúng được đọc 4 socket thì sẽ có 4 yêu cầu khác nhau liên quan đến việc đọc đó. – pushya
không, phản hồi có thể có nhiều phần.Nếu bạn nhìn vào bất kỳ mã socket mức thấp nào bạn sẽ thấy rằng 'read()' xảy ra trong một vòng lặp while, và giá trị trả về của 'read()' là số byte được đọc. Không có yêu cầu rằng toàn bộ phản ứng đến trong một ổ cắm duy nhất đọc. Tôi sẽ cập nhật câu trả lời của mình để bao gồm thêm chi tiết. – Kevin