2016-08-03 5 views
2

Retrofit 2에서 인터넷 연결 오류를 검색하려면 어떻게합니까?Retrofit 2에서 '인터넷 연결 없음'오류가 발생했습니다.

Retrofit 1에서 수행 한 작업은 클라이언트 인터페이스를 구현하고 실행 (요청 요청)시 연결 확인을 수행하는 것입니다. 내가 개조 2 시도 무엇

입니다 :

public class RequestInterceptor implements Interceptor { 

    final ConnectivityManager connectivityManager; 

    @Inject 
    public RequestInterceptor(ConnectivityManager connectivityManager) { 
     this.connectivityManager = connectivityManager; 
    } 

    @Override 
    public Response intercept(Chain chain) throws IOException { 
     if (isConnected()) { 
      throw new OfflineException("no internet"); 
     } 

     Request.Builder r = chain.request().newBuilder(); 
     return chain.proceed(r.build()); 
    } 

    protected boolean isConnected() { 
     NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); 
     return networkInfo != null && networkInfo.isConnectedOrConnecting(); 
    } 

} 

내가 아니라 오류가 OnFailure의 매개 변수로 반환됩니다 비동기와 (try-catch 블록을 추가하여 동기 개조 실행과 그것을 잡을 수 있어요 통화 호출, Throwable t). 응용 프로그램은 단지 OfflineException과 충돌, 나는 요격기를 던져.

+0

을 상속한다. 'chain.proceed (chain.request()) '를 호출하면된다. –

+0

@awonderer -이 방법은 네트워크 연결을 확인하거나 인터넷 연결을 확인합니다. –

답변

1

해결책을 찾았습니다.

OfflineException 클래스는 새로운 요청을 만들 때, BTW 불필요한 객체 할당을 수행하는 IOException