Обработайте время ожидания соединения и чтения для вызовов RestClient в Android

У меня есть интерфейс RestService со многими вызовами отдыха, которые я использую во всем приложении.

Я устанавливаю таймауты для обработкиconnection а такжеread-timeouts

ClientHttpRequestFactory httpFactory = myRestService.getRestTemplate().getRequestFactory();
    if(httpFactory!=null)
    {
        if(httpFactory instanceof SimpleClientHttpRequestFactory)
        {
            ((SimpleClientHttpRequestFactory)httpFactory).setConnectTimeout(10*1000);
            ((SimpleClientHttpRequestFactory)httpFactory).setReadTimeout(30*1000);
        }
        else if(httpFactory instanceof HttpComponentsClientHttpRequestFactory)
        {
            ((HttpComponentsClientHttpRequestFactory)httpFactory).setConnectTimeout(10*1000);
            ((HttpComponentsClientHttpRequestFactory)httpFactory).setReadTimeout(30*1000);
        }
    }

Но я застрял с обработкой ситуации тайм-аута. Я думал об использовании этого метода, но он не входит в этот цикл при сбое вызова rest.

myRestService.getRestTemplate().setErrorHandler(new ResponseErrorHandler() 
    {
        @Override
        public boolean hasError(ClientHttpResponse paramClientHttpResponse) throws IOException 
        {
            Log.e(TAG, paramClientHttpResponse==null?"Null response" : ("Has Error : " + paramClientHttpResponse.getStatusText()+" , status code : "+paramClientHttpResponse.getStatusCode()));

            return false;
        }
        @Override
        public void handleError(ClientHttpResponse paramClientHttpResponse) throws IOException 
        {
            Log.e(TAG, paramClientHttpResponse==null?"Null response":("Handle Error : " + paramClientHttpResponse.getStatusText()+" , status code : "+paramClientHttpResponse.getStatusCode()));
        }
    });

Кто-нибудь может мне помочь с этим ..!?

Ответы на вопрос(1)

Решение Вопроса

разъем исключения не могут быть покрыты ErrorHandlers. Целью ErrorHandlers является поиск ошибок в существующем Response, как указано в ResponseErrorHandler 'подпись метода s.

Все исключения сокетов генерируют RestClientException и должны быть перехвачены для каждой операции RestTemplate, такой как getForObject () в блоке try ... catch.

try {
    repr = myRestService.getRestTemplate().getForObject(url, responseType, vars);
} catch (RestClientException e) {
    //Further exception processing, forming negative response should be here
}

Проверять, выписыватьсяссылка.

Надеюсь, это поможет.

 Aswathy P Krishnan23 мая 2013 г., 13:47
Спасибо @alexei, за ваш ответ и предложение. Я добавил этот тег. Что касается вопроса, я обрабатываю REstClientException, как вы объяснили. Что мне нужно, это попытаться получить исключение внутри обработчика и обработать его там. В случае SocketTimeoutExceptions я хочу изящно обработать это в клиенте с сообщением или около того. Я прокомментировал то же самое в этом ответе:stackoverflow.com/a/14320675/1237656 , Пожалуйста, посмотрите ..!
 alexei burmistrov23 мая 2013 г., 14:58
Ну, я нашел запрос на эту проблему, но без должного ответа.forum.springsource.org/...

Ваш ответ на вопрос