spring-android RestTemplate の優れた機能の 1 つは、OS のバージョンに応じて RequestFactory の適切な (Google が推奨する) 実装を使用することです。
Google では、Gingerbread (バージョン 2.3) 以降では J2SE 機能を使用することを推奨していますが、以前のバージョンでは HttpComponents HttpClient を使用する必要があります。この推奨事項に基づいて、RestTemplate はアプリが実行されている Android のバージョンをチェックし、適切な ClientHttpRequestFactory を使用します。
したがって、HttpComponentsClientHttpRequestFactory (Android OS バージョン < 2.3 の spring-android で使用される) が考慮されていないため、前の回答は完全ではありません。
私の解決策は次のようなものでした:
public class MyRestTemplate extends RestTemplate {
public MyRestTemplate() {
if (getRequestFactory() instanceof SimpleClientHttpRequestFactory) {
Log.d("HTTP", "HttpUrlConnection is used");
((SimpleClientHttpRequestFactory) getRequestFactory()).setConnectTimeout(10 * 1000);
((SimpleClientHttpRequestFactory) getRequestFactory()).setReadTimeout(10 * 1000);
} else if (getRequestFactory() instanceof HttpComponentsClientHttpRequestFactory) {
Log.d("HTTP", "HttpClient is used");
((HttpComponentsClientHttpRequestFactory) getRequestFactory()).setReadTimeout(10 * 1000);
((HttpComponentsClientHttpRequestFactory) getRequestFactory()).setConnectTimeout(10 * 1000);
}
}
}