¿Cómo aumentar el tiempo de espera para las solicitudes de reacondicionamiento en robospice android?

He implementado robospice en mi proyecto y uso retrofit para todas las llamadas api. Para algunas de las solicitudes, necesito aumentar el tiempo de espera, por favor, hágamelo saber cómo puedo hacer eso?

Realmente estoy utilizando el servicio que extiende RetrofitGsonSpiceService. El código de mi clase de servicio está abajo:

Clase pública MyService extends RetrofitGsonSpiceService {

@Override public void onCreate() { super.onCreate(); addRetrofitInterface(MyInterface.class); } @Override public CacheManager createCacheManager(Application application) throws CacheCreationException { CacheManager cacheManager = new CacheManager(); ObjectPersisterFactory persistFactory = new RetrofitObjectPersisterFactory(application, getConverter(), getCacheFolder()); persistFactory.setAsyncSaveEnabled(true); cacheManager.addPersister(persistFactory); return cacheManager; } @Override protected String getServerUrl() { return Utils.getBaseUrl(); } @Override protected RestAdapter.Builder createRestAdapterBuilder() { RestAdapter.Builder builder = new RestAdapter.Builder().setRequestInterceptor( new RequestInterceptor() { @Override public void intercept(RequestFacade request) { request.addHeader(Const.HEADER_DEVICE_TYPE_KEY, Const.HEADER_DEVICE_TYPE_VALUE); } } ); builder.setEndpoint(getServerUrl()).setConverter(getConverter()); return builder; } 

}

Me tropecé aquí con una pregunta similar y finalmente encontré la respuesta en otra parte. Si hubiese existido un ejemplo más completo, habría ahorrado tiempo, así que volví a escribir lo que funcionó para mí en caso de que ayude a otros:

Adaptador con mayor tiempo de espera de lectura

  // create client OkHttpClient okHttpClient = new OkHttpClient(); okHttpClient.setReadTimeout(60 * 1000, TimeUnit.MILLISECONDS); // create rest adapter using the client above RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint(getBaseApiUrl()) .setClient(new OkClient(okHttpClient)) // this gson converter below is optional. We use it for parsing dates and enums .setConverter(new GsonConverter(createApiGson())) .setLogLevel(getRetrofitLogLevel()) .build(); 

NOTA: para nosotros, getBaseApiUrl() devuelve algo así como: https://some.company.com/api/
Y getRetrofitLogLevel() devuelve RestAdapter.LogLevel.FULL o RestAdapter.LogLevel.NONE dependiendo del sabor de la aplicación que se construye.

Por último, estas son las principales dependencias que hacen que todo funcione:

Dependencias clave

 dependencies { ... compile "com.squareup.retrofit:retrofit:1.5.0" compile "com.squareup.retrofit:retrofit-mock:1.5.0" compile "com.squareup.okhttp:okhttp:1.5.4" compile "com.google.code.gson:gson:2.2.4" ... } 

En su servicio de extensión de RetrofitSpiceService , tendrá que sobrescribir createRestAdapterBuilder() .

  @Override protected Builder createRestAdapterBuilder() { Builder builder = super.createRestAdapterBuilder(); builder.setClient(new CustomClient()); return builder; } 

CustomClient es la clase que usted necesita escribir para proveer sus propios tiempos de espera. Si está usando OkHttp, eche un vistazo al predeterminado OkClient para referencia: https://github.com/square/retrofit/blob/43b7ea14e5aca1d710deccb95b79484b03e99bb9/retrofit/src/main/java/retrofit/client/OkClient.java

No sé acerca de robospice pero con retrofit 2+ y okhttp3 + debe establecer un nuevo cliente como este.

 OkHttpClient okHttpClient = new OkHttpClient(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constantes.URL_DOMAIN) .addConverterFactory(GsonConverterFactory.create()) .client(okHttpClient.newBuilder().connectTimeout(Constantes.TIMEOUT, TimeUnit.SECONDS).readTimeout(Constantes.TIMEOUT, TimeUnit.SECONDS).writeTimeout(Constantes.TIMEOUT, TimeUnit.SECONDS).build()) .build(); 

Importa esto en tu módulo build.gradle:

 compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3' compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3' compile 'com.squareup.okhttp3:okhttp:3.0.0-RC1' 
  • Uso de adaptadores de sincronización + Volley / RoboSpice para procesamiento sincronizado de solicitudes de red
  • Uso de RoboSpice y RxJava
  • Configuración de la conexión TimeOut en la solicitud de RoboSpice android
  • RoboSpice y Jsoup
  • Detener un proceso de fondo en robospice
  • Retrofit / Robospice: ¿Obtener los encabezados de respuesta de una solicitud exitosa?
  • ¿Cómo puedo obtener Robospice para tratar cualquier cosa que no sea una respuesta 200 de Retrofit & OKHttp como un error
  • ¿Es realmente necesario RoboSpice shouldStop ()?
  • Retrofit: parámetros de consulta múltiples en el comando @GET?
  • ¿Cómo usar Mockito para probar las API a lo largo de Robospice y Retrofit?
  • Error de entrada de Duplicate Commons-Io usando Robospice y Android Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.