[解決済み] Android版Retrofitで「インターネットに接続できません」と表示されたときの対処法
2022-06-26 05:59:48
質問
インターネットに接続できない状況に対応したい。普段は実行するのですが
ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
activeNetwork.isConnectedOrConnecting();
から ここで からの) リクエストをネットワークに送信する前に、インターネットに接続されていない場合はユーザーに通知します。
私が見たところ、Retrofitはこの状況を特に扱いません。インターネットに接続されていない場合、私は単に
RetrofitError
と表示され、その理由としてタイムアウトが表示されます。
このようなチェックをRetrofitですべてのHTTPリクエストに組み込みたい場合、どのようにすればよいのでしょうか。あるいは全くしないほうがいいのでしょうか。
ありがとうございます。
アレックス
どのように解決するのですか?
私が最終的に行ったのは、リクエストを実行する前に接続性をチェックし、例外を投げるカスタムRetrofitクライアントを作成することです。
public class ConnectivityAwareUrlClient implements Client {
Logger log = LoggerFactory.getLogger(ConnectivityAwareUrlClient.class);
public ConnectivityAwareUrlClient(Client wrappedClient, NetworkConnectivityManager ncm) {
this.wrappedClient = wrappedClient;
this.ncm = ncm;
}
Client wrappedClient;
private NetworkConnectivityManager ncm;
@Override
public Response execute(Request request) throws IOException {
if (!ncm.isConnected()) {
log.debug("No connectivity %s ", request);
throw new NoConnectivityException("No connectivity");
}
return wrappedClient.execute(request);
}
}
を設定する際に使用します。
RestAdapter
RestAdapter.Builder().setEndpoint(serverHost)
.setClient(new ConnectivityAwareUrlClient(new OkHttpClient(), ...))
関連
-
adb devices OffLine Solution(オフラインソリューション
-
Androidのadbデバイスがオフラインであることが判明
-
android E/RecyclerView﹕ アダプタが接続されていないため、レイアウトをスキップする。
-
Androidのカラーグラデーション実装のまとめ
-
アンドロイドシェイプ、グラデーション、角丸、ボーダーラインの設定
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] Androidで画面の大きさをピクセル単位で取得する方法
-
[解決済み] Androidアプリケーションのアクティビティ間でデータを受け渡すにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
android.os の NetworkOnMainThreadException。
-
Android開発で「Attempt to invoke virtual method 'XXX()' on null object reference」というヌルポインター例外に遭遇する。
-
アンドロイドスタジオのエラーを解決する --> Error:(1, 0) id 'com.android.application' を持つプラグインが見つかりません。
-
android studioが "The activity must be exported or contain an intent-filter" と表示され実行される。
-
ライブラリをモジュールとしてインポートする際にエラーが発生しました。Error:A problem occurred configuring project ':library'.
-
android exception - aapt.exe has stopped working.
-
Android ProgressBarのスタイルカラーを変更する
-
SpinnerのOnItemSelectedListenerのonItemSelectedメソッドの4つのパラメーターの意味
-
Android--shape--描画のコーナー、グラデーション、パディング、サイズ、ソリッド、ストロークのプロパティを指定する。
-
アンドロイドシェイプ、グラデーション、角丸、ボーダーラインの設定