2017-07-19 21 views
1

何らかの応答を待っているのに接続が "切断"されているように、時々 "スタック"するtcp要求に問題があるようです。既定のタイムアウトでHttpURLConnectionの期待された動作ですか?私はこの奇妙な "ハング"状態にデフォルトで入ることができないように設定された合理的なデフォルトがありますか?HttpURLConnectionタイムアウトのデフォルト値

答えて

0

HttpURLConnectionの「デフォルト」タイムアウトがゼロになると、「タイムアウトなし」という意味になります。

残念ながら、私の経験では、これらのデフォルトを使用すると、サーバーへの接続の状況によっては、不安定な状態になることがあります。 HttpURLConnectionを使用し、タイムアウトを明示的に設定(少なくとも読み取り)しないと、接続が永続的な古くなった状態になる可能性があります。デフォルトで。したがって、常にsetReadTimeoutを「何か」に設定するか、接続が孤立している可能性があります(アプリの実行方法によってはスレッドになる可能性があります)。

試してみると、ソケット自体が(少なくともOS Xでは)2分の「接続タイムアウト」のように見えるので、setConnectTimeoutを呼び出す必要はありません。

system propertiesを調整して、タイムアウトの「グローバルデフォルト」を設定することもできます。

修正/予後:常にreadTimeoutを設定するか、SO_KEEPALIVEを設定できる別のクライアントを使用してください。

関連する問題