2016-12-24 16 views
1

でretrofit2.adapter.rxjava.HttpExceptionにキャストすることはできません私は私のログにこのエラーを取得しています:にjava.net.UnknownHostExceptionはRxJava

Caused by java.lang.ClassCastException: java.net.UnknownHostException cannot be cast to retrofit2.adapter.rxjava.HttpException 

と私のonErrorメソッドのthats。このエラーは、デバイスに接続がない場合に発生した可能性があります。

@Override 
     public void onError(Throwable e) { 
      assert e != null; 
      Timber.d(e); 
      HttpException exception = (HttpException) e; 
      assert view != null; 
      view.hideRefreshSpinner(); 
      if (exception.code() == HttpURLConnection.HTTP_BAD_REQUEST) { 
       view.showSnackbarInvalidError(); 
      } else { 
       view.showUnauthorizedError(); 
      } 

     } 
+0

をホストアドレスが有効である –

+0

あなたのホストアドレスを入れて、それはちょうど私のコールが行われたときにネットワークがあると思いますが、実際の接続はありません。 –

答えて

4

あなたがjava.net.UnknownHostExceptionなくretrofit2.adapter.rxjava.HttpExceptionのインスタンスを受信して​​いるので、これが起こっています。あなたはdocを見れば、それは言う:

  • 直接体(例えば、観察可能)が2XX応答のための非直列化されたボディとonNext呼び出し、非2xx応答やネットワークのためののIOExceptionのため HttpExceptionとのonError呼び出します エラー
  • 応答包まれた体は、(例えば、観察可能>)は、すべてのHTTP応答のレスポンスオブジェクトにonNext呼び出し、
  • 結果包まれた体(例えば、観察可能>)ネットワークエラーのためにIOExceptionでのonError を呼び出し、結果オブジェクトのためにonNext呼び出しますすべてのHTTP応答とエラー

ネットワークエラーが発生しました。

また、あなたがこのようなあなたのコードラップすることができますthis

を参照してください。

@Override 
public void onError(Throwable e) { 
    assert e != null; 
    Timber.d(e); 
    if (e instanceof HttpException) { 
     assert view != null; 
     view.hideRefreshSpinner(); 
     if (((HttpException) e).code() == HttpURLConnection.HTTP_BAD_REQUEST) { 
      view.showSnackbarInvalidError(); 
     } else { 
      view.showUnauthorizedError(); 
     } 
    } 
} 
+0

返事をありがとう、私はそれを試し、結果と戻ってくる。 –

関連する問題