2017-05-12 1 views
2

Ich benutze Retrofit und OkHttp, um eine Verbindung zum Server herzustellen. in den meisten Fällen funktioniert es gut. aber manchmal scheitert es. einige Male HTTP FEHLGESCHLAGEN: java.net.UnknownHostException und einige Male java.net.SocketTimeoutException. Dieser Fehler ist nur, wenn ich zu Hause mit dem WLAN Verbindung zum Server verwende. aber wenn ich das Mobilfunknetz nutze ist es gut und es gibt kein Problem. Verwendung mit Emulator ist gut. es passiert nur mit einem echten Gerät. und nur manchmal nicht alle Male.java.net.SocketTimeoutException mit Retrofit

OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); 
    httpClient.readTimeout(30, TimeUnit.SECONDS) 
      .connectTimeout(30, TimeUnit.SECONDS) 
      .writeTimeout(30, TimeUnit.SECONDS) 
      .build(); 



    retrofit = new Retrofit.Builder() 
      .baseUrl(ClientConfigs.REST_API_BASE_URL) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .client(httpClient.build()) 
      .build(); 


compile 'com.squareup.retrofit2:retrofit:2.2.0' 
compile 'com.squareup.retrofit2:converter-gson:2.1.0' 
+0

Stack Overflow ist für die Programmierung von Fragen. Was ist deine Frage? Wenn Ihre Frage lautet: "Wie vermeide ich diese Fehler?" Lautet die Antwort "Stoppt die Nutzung des Internets". Sie werden auf diese Art von Problemen stoßen * viel * wenn Sie Ihre App veröffentlichen und es in allen Arten von Netzwerken in allen möglichen Situationen verwendet wird. – CommonsWare

Antwort

0

hatte ähnliche Probleme gelöst mit:

OkHttpClient client = new OkHttpClient.Builder() 
        .readTimeout(1, TimeUnit.MINUTES) 
        .writeTimeout(1, TimeUnit.MINUTES) 
        .connectTimeout(1, TimeUnit.MINUTES) 
        .build(); 
0

In meinem aktuellen Projekt, das ich das gleiche Problem haben. Wahrscheinlich ist es ein Problem mit Ihrer Netzwerkhardware/-software. Ich habe zwei Router. Mit dem ersten Router funktioniert meine App perfekt. Der zweite Router befindet sich in einem anderen Raum. Wenn ich versuche, App fast zu benutzen, funktioniert es gut. Aber wenn ich in ein anderes Zimmer gehe und versuche, mit einem guten Signal eine Anfrage zu machen - erhalte ich nach 5 Sekunden java.net.SocketTimeoutException (mein Timeout in Retrofit beträgt 120 Sekunden).