2017-09-05 6 views
0

J'utilise Retrofit 2.0, le code ci-dessous consignera:(2.0) Appel Rénovation à l'intérieur d'un appel Retrofit provoque un temps d'exception

"insertListingImages, SocketOutOfTimeException:TimeOut timeout".

Pourquoi provoque-t-il une exception de dépassement de délai? comment puis-je le résoudre? La chose étrange est que si l'appel de rénovation, hi() n'est pas à l'intérieur de l'appel de rénovation, insertListingImages() tout irait bien.

retrofit = new Retrofit.Builder() 
       .baseUrl("http://IP_ADRESS/") 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build().create(DatabaseInterface.class); 

retrofit.insertListingImages(imageListingRequest).enqueue(new Callback<Void>() { 
        @Override 
        public void onResponse(Call<Void> call, Response<Void> response) { 
         Log.d("insertListingImages", "Success"); 
          retrofit.hi().enqueue(new Callback<Void>(){ 
          @Override 
          public void onResponse(Call<Void> call, Response<Void> response){ 
           Log.d("hiTest", "Success"); 
          } 

          @Override 
          public void onFailure(Call<Void> call, Throwable t) { 
           Log.d("hiTest", "fail: " + t.toString() + " " + t.getMessage()); 
          } 


          }); 
        } 

        @Override 
        public void onFailure(Call<Void> call, Throwable t) { 
         Log.d("insertListingImages", "fail: " + t.toString() + " " + t.getMessage()); 
        } 
}); 

Répondre

0

Vous pouvez modifier le délai de connexion et le délai de lecture par ce code. vous devez définir le client personnalisé pour la rénovation

HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); 
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 
    OkHttpClient client = new OkHttpClient.Builder().connectTimeout(120, TimeUnit.SECONDS).readTimeout(120, TimeUnit.SECONDS).addInterceptor(interceptor).build(); 
Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(Constants.url) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .client(client) 
      .build(); 

Ici, dans le code ci-dessus défini le temps comme 120 secondes, vous pouvez changer cela en fonction de votre besoin

nécessaire pour ajouter ci-dessous ligne dans la construction fichier .gradle

compile 'com.squareup.okhttp3:logging-interceptor:3.3.1' 
+0

Je vais essayer cela quand je cnan; mais pourquoi le délai d'attente s'est-il produit? –

+0

lire ceci https://stackoverflow.com/questions/30767460/okhttp-retrofit-default-timeout – Nithinlal