非常に具体的な Android HTC Rezound の問題があり、誰かが解決策を持っていることを願っています。
HTC Rezound を使用して 4g ネットワークに接続しているときに、HttpURLConnection を使用してサーバーに接続しようとすると、不明なホスト例外エラーが発生します。この問題の奇妙な点は、電話が Wi-Fi または 3g に接続されている場合、サーバーへの接続が完全に機能することです。問題があるのは 4g だけです。この問題は、サーバーの TTL (Time to Live) が 0 秒に設定されていることが原因であると考えています。残念ながら、TTL の変更はオプションではなく、回避策が必要です。
テストとして、ホスト名の IP アドレスをハードコーディングし、それを使用して接続を試みたところ、問題なく動作しました。現在、サーバーは DNS レベルのラウンド ロビン ロード バランサーを使用しているため、IP アドレスをハード コーディングすることは現実的な解決策ではありません。InitAddress を使用して、プログラムで IP アドレスを取得しようとしました。
InetAddress inet = InetAddress.getByName(url.getHost());
String ipAddress = inet.getHostAddress();
残念ながら、この回避策でも不明なホスト例外が返されます。
また、次を使用して Java の内部 DNS キャッシュを変更しようとしました。
System.setProperty("networkaddress.cache.ttl" , "100");
しかし、これもうまくいきませんでした。
他の提案や解決策は大歓迎です!
ありがとうございました。