2016-09-07 6 views
3

Retrofit Call:Retrofit java.net.SocketTimeoutException

RestAdapter restAdapter = new RestAdapter.Builder() 
     .setEndpoint("BASE URL") 
     .setLogLevel(RestAdapter.LogLevel.FULL) 
     .setClient(new OkClient(getOkHttpClient())) 
     .build(); 

Abhängigkeiten:

compile 'com.squareup.okhttp:okhttp:2.7.2' 
compile 'com.squareup.retrofit:retrofit:1.9.0' 

Fehler: User_id = XXXX & item_id = X & item_quantity = 1 & item_cost = XXXX & pay_id = stripe & process_fee = XXX & total_kosten = XXX & is_nagotiation = 0 & negotiate_id = & Tipps = XXX & card_id = XXXX

09-07 11:45:08.628 23473-24373/com.bridgellc.bridge D/Retrofit: ---> END HTTP (177-byte body) 09-07 11:45:18.635 23473-24373/com.bridgellc.bridge D/Retrofit: ---- ERROR http:XXXXXX 09-07 11:45:18.650 23473-24373/com.bridgellc.bridge D/Retrofit: java.net.SocketTimeoutException

+1

Frage richtig erklären. Wann erhalten Sie diesen Fehler? Welche Lösung hast du versucht? –

Antwort

2

Versuch ein Timeout für Ihre OkHttp2-Client einzustellen. Zuerst eine erstellen OkHttp2 Client,

OkHttpClient client = new OkHttpClient.Builder() 
client.setConnectTimeout(5, TimeUnit.MINUTES); 
client.setReadTimeout(5, TimeUnit.MINUTES); 
.build(); 

Dann ist es als Standard-Client zum Retrofit

RestAdapter restAdapter = new RestAdapter.Builder() 
.setEndpoint("BASE_URL") 
.setLogLevel(RestAdapter.LogLevel.FULL) 
.setClient(client).build(); 
+0

@PritishDharmaraj Überprüfen Sie die aktualisierte Antwort! –

+0

Retrofit Standard Okclient Verbindung Timeout ist 10 sec.aber ich bin diese Verbindungszeit Werte geändert sind 20 Sekunden gleich wie Ihre Methode. RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint (AppConstants.BASE_URL) .setLogLevel (RestAdapter.LogLevel.FULL) .setClient (new OkClient (getOkHttpClient())) .build(); –

+0

// Ok Client Wartezeit anpassen privaten OkHttpClient getOkHttpClient() { final OkHttpClient okHttpClient = new OkHttpClient(); okHttpClient.setReadTimeout (20, TimeUnit.SECONDS); okHttpClient.setConnectTimeout (20, TimeUnit.SECONDS); Rückgabe okHttpClient; } –

2

Es hängt von verschiedenen Faktor einer von denen hinzuzufügen, ist Timeout wie connectionTimeout etc.If Ihre Der Server reagiert nicht innerhalb der Zeitüberschreitung. SocketTimeoutException. können Sie versuchen, timeout von okhttp

private static OkHttpClient okClient() { 
     return new OkHttpClient.Builder() 
       .connectTimeout(1, TimeUnit.MINUTES) 
       .writeTimeout(1, TimeUnit.MINUTES) 
       .readTimeout(1, TimeUnit.MINUTES) 
       .build(); 
    } 

und setzen Sie ihn auf Retrofit Instanz standardmäßig zu erhöhen.

Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(Util.APP_UPDATE) 
       .client(RestClient.okClient()) 
       .addConverterFactory(GsonConverterFactory.create(gson)) 
       .build(); 
+0

".addConverterFactory (GsonConverterFactory.create (gson))" wird nicht unterstützt Abhängigkeiten: compile 'com.squareup.retrofit: Nachrüstung: 1.9.0' –

+0

Ich verwende nicht "kompilieren" com.squareup.retrofit2: Nachrüstung: 2.1 .0 '"Ich benutze" kompilieren "com.squareup.retrofit: Nachrüstung: 1.9.0'" beide sind unterschiedlich –

+0

Dies ist nur eine Referenz zum Einstellen eines benutzerdefinierten OK-Clients zur Nachrüstung der Instanz, die Sie im Falle von 1.9 auf RestAdapter einstellen können . – Godather

Verwandte Themen