2017-02-01 4 views
1

프로젝트에 Retrofit 2를 성공적으로 구현했으며 모든 것이 예상대로 작동합니다. 그러나 인터넷이 없으면 앱에서 실패한 요청에 대한 여러 요청을 보냅니다. 이로 인해 생성 된 계속 실패한 요청 스택이 생성되어 앱이 중단 될 수 있습니다.인터넷 연결이 끊어 지더라도 재 시행이 계속됩니다.

나는 그러한 행동의 원인을 이해하지 못합니다.

02-01 16:16:08.812 27970-28054/? D/OkHttp: --> GET https://api.newsapi.in/v1/stories/category/india?nobody=true&skip=0&limit=10 http/1.1 
02-01 16:16:08.812 27970-28054/? D/OkHttp: --> END GET 
02-01 16:16:08.812 27970-28054/? D/OkHttp: <-- HTTP FAILED: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:08.912 27970-28054/? D/OkHttp: --> GET https://api.newsapi.in/v1/stories/category/international?nobody=true&skip=0&limit=10 http/1.1 
02-01 16:16:08.912 27970-28054/? D/OkHttp: --> END GET 
02-01 16:16:08.912 27970-28054/? D/OkHttp: <-- HTTP FAILED: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:08.922 27970-27970/? E/NewsListFragment: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:08.922 27970-27970/? E/NewsListFragment: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:08.942 27970-27979/? I/dalvikvm: Jit: resizing JitTable from 4096 to 8192 
02-01 16:16:09.042 27970-28054/? D/OkHttp: --> GET https://api.newsapi.in/v1/stories/category/india?nobody=true&skip=0&limit=10 http/1.1 
02-01 16:16:09.042 27970-28054/? D/OkHttp: --> END GET 
02-01 16:16:09.042 27970-28054/? D/OkHttp: <-- HTTP FAILED: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:09.142 27970-28054/? D/OkHttp: --> GET https://api.newsapi.in/v1/stories/category/international?nobody=true&skip=0&limit=10 http/1.1 
02-01 16:16:09.142 27970-28054/? D/OkHttp: --> END GET 
02-01 16:16:09.142 27970-28054/? D/OkHttp: <-- HTTP FAILED: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:09.152 27970-27970/? E/NewsListFragment: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:09.162 27970-27970/? E/NewsListFragment: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:09.282 27970-28054/? D/OkHttp: --> GET https://api.newsapi.in/v1/stories/category/india?nobody=true&skip=0&limit=10 http/1.1 
02-01 16:16:09.282 27970-28054/? D/OkHttp: --> END GET 
02-01 16:16:09.282 27970-28054/? D/OkHttp: <-- HTTP FAILED: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:09.402 27970-28054/? D/OkHttp: --> GET https://api.newsapi.in/v1/stories/category/international?nobody=true&skip=0&limit=10 http/1.1 
02-01 16:16:09.402 27970-28054/? D/OkHttp: --> END GET 
02-01 16:16:09.402 27970-28054/? D/OkHttp: <-- HTTP FAILED: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:09.412 27970-27970/? E/NewsListFragment: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:09.432 27970-27970/? D/dalvikvm: GC_FOR_ALLOC freed 2592K, 13% free 21331K/24320K, paused 27ms, total 27ms 
02-01 16:16:09.442 27970-27970/? E/NewsListFragment: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:09.552 27970-28054/? D/OkHttp: --> GET https://api.newsapi.in/v1/stories/category/india?nobody=true&skip=0&limit=10 http/1.1 
02-01 16:16:09.552 27970-28054/? D/OkHttp: --> END GET 
02-01 16:16:09.552 27970-28054/? D/OkHttp: <-- HTTP FAILED: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:09.662 27970-28054/? D/OkHttp: --> GET https://api.newsapi.in/v1/stories/category/international?nobody=true&skip=0&limit=10 http/1.1 
02-01 16:16:09.662 27970-28054/? D/OkHttp: --> END GET 
02-01 16:16:09.662 27970-28054/? D/OkHttp: <-- HTTP FAILED: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:09.662 27970-27970/? E/NewsListFragment: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
02-01 16:16:09.672 27970-27970/? E/NewsListFragment: java.net.UnknownHostException: Unable to resolve host "api.newsapi.in": No address associated with hostname 
+0

개조가 재 시도 중이라고 생각하지 않습니다. 대부분 당신은 계속해서 요청하고 있습니다. – Blackbelt

답변

3

개조하지 않으려 고했지만 재 시도하지 않았습니다. 그러나 OkHttp에는 이러한 기능이 있습니다. this article을보십시오. 기본적으로 사용하도록 설정되어 있습니다.

OkHttpClient.BuilderretryOnConnectionFailure을 호출하여 사용을 중지 할 수 있습니다.

이 변경 사항은 Retrofit 2.1.0 (OkHttp 3.3.0)부터 발생합니다.

0

모바일이 인터넷에 연결되어 있지 않은 경우 계속해서 요청하지 마십시오.

모바일 사이트가 인터넷에 연결되어 있는지 여부를 확인하기 전에 확인한 곳에서 자신의 util 클래스에 일반적인 방법을 만든 다음 요청을 보냅니다. 다음은 모바일이 인터넷에 연결되어 있는지 여부를 확인하는 일반적인 방법입니다.

public static boolean hasNetworkConnection(Context context) { 
    if (context == null) return false; 
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE); 
    //Was causing crash due to required permission for access network state 
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
    if (activeNetwork != null) { 
     if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) 
      return activeNetwork.isConnected(); 
     else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) 
      return activeNetwork.isConnected(); 
    } 
    return false; 
} 
+0

isConnected 매개 변수에서'int type'을 위해 제공해야하는 값은 무엇입니까? –