5

アプリケーション全体で使用している多くの残りの呼び出しを含む 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);
        }
    }

しかし、タイムアウト状況の処理に行き詰まっています。私はこの方法を使用することを考えましたが、残りの呼び出しが失敗したときにこのループに入っていません。

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()));
        }
    });

誰でもこれで私を助けることができます..!?

4

1 に答える 1

9

タイムアウト、不正なゲートウェイ、ホストが見つからない、およびその他のソケット例外は、ErrorHandlers ではカバーできません。ErrorHandlers の目的は、ResponseErrorHandler のメソッド シグネチャに記述されているように、既存の Response でエラーを探すことです。

すべてのソケット例外は RestClientException をスローし、getForObject() などの RestTemplate 操作ごとに try...catch ブロックでキャッチする必要があります。

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

参照を確認してください。

うまくいけば、それは役に立ちます。

于 2013-05-22T08:57:07.710 に答える