Используя Apache HttpClient, как установить ТАЙМ-АУТ для запроса и ответа

Мне нужно установить время ожидания для Http-запроса, который мы отправляем службе (не веб-службе). Мы используем HTTP-клиент Apache.Я добавил эти 2 строки кода, чтобы установить время ожидания при запросе и ответе на сервис.

HttpConnectionParams.setConnectionTimeout(params, 10000);
HttpConnectionParams.setSoTimeout(params, 10000);

1) В настоящее время я установил 10 секунд в качестве времени ожидания, так как я вижу, что ответ приходит от службы почти мгновенно. Должен ли я увеличить или уменьшить время?

2) Что произойдет, если ответ займет более 10 секунд? Будет ли это вызывать исключение и какое это будет исключение? Есть ли что-нибудь еще, что мне нужно добавить, чтобы установить время ожидания в приведенном ниже коде.

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;
}
37
задан Nathan 2 September 2015 в 19:36
поделиться