Spring-android RestTemplateの優れた機能の1つは、OSのバージョンに応じてRequestFactoryの適切な(Googleが推奨する)実装を使用することです。
は、Googleが以前のバージョンがHttpComponentsのHttpClientを使用する必要がありながら、ジンジャーブレッド(バージョン 2.3)以降にJ2SE施設を使用することを推奨しています。この推奨に基づいて、RestTemplateは、アプリが実行されている Androidのバージョンをチェックし、 の適切なClientHttpRequestFactoryを使用します。
HttpComponentsClientHttpRequestFactory(Android OSのバージョン< 2.3のために、ばねアンドロイドで使用されている)を考慮していないので、だから、前の回答は満杯ではありません。デフォルトのタイムアウトは無限である
...明示的に質問に答えるために
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);
}
}
}
感謝を。私はSimpleClientHttpRequestFactoryのドキュメントをチェックし、 "デフォルトのタイムアウトはシステムのデフォルトのタイムアウトです"と言います。どういう意味ですか ? –
SimpleClientHttpRequestFactoryのソースコードを見てきました。デフォルト値は、読み取りと接続タイムアウトの両方で-1です。私はHTTPがURLConnectionに依存していることを意味するデフォルトを、デフォルトのタイムアウト設定のためにjdkに依存すると考えます。 –
URLConnectionのデフォルトのタイムアウトは無限です。 RestTemplateにも無制限のタイムアウト値があることを意味しますか? –